Tak - Laravel JEST naprawdę powolny. Z tego powodu stworzyłem aplikację POC. Prosty router z formularzem logowania. Mogłem uzyskać tylko 60 RPS przy 10 jednoczesnych połączeniach na cyfrowym serwerze oceanicznym za 20 USD (kilka GB pamięci RAM);
Ustawiać:
2gb RAM
Php7.0
apache2.4
mysql 5.7
memcached server (for laravel session)
Przeprowadziłem optymalizacje, automatyczne ładowanie zrzutu kompozytora itp., I faktycznie obniżyłem RPS do 43-ish .
Problem polega na tym, że aplikacja odpowiada w 200-400 ms. Uruchomiłem test AB z lokalnego komputera, na którym laravel był włączony (tj. Nie przez ruch internetowy); i mam tylko 112 RPS; z 200 ms szybszym czasem odpowiedzi ze średnią 300 ms.
Dla porównania przetestowałem moją produkcyjną aplikację natywną PHP obsługującą kilka milionów żądań dziennie na AWS t2.medium (x3, zrównoważone obciążenie). Kiedy miałem 25 jednoczesnych połączeń z mojego lokalnego komputera do tego przez Internet, przez ELB, otrzymałem około 1200 RPS. Ogromna różnica między maszyną z obciążeniem a stroną "logowania" laravel.
Są to strony z sesjami (flexibleache / memcached), wyszukiwania Live DB (zapytania w pamięci podręcznej przez memcached), zasoby ściągnięte przez CDN itp., Itd.
Co mogę powiedzieć, laravel wytrzymuje około 200-300 ms obciążenia. W końcu jest to dobre dla widoków generowanych przez PHP, w końcu ten typ opóźnienia jest tolerowany podczas ładowania. Jednak w przypadku widoków PHP, które używają Ajax / JS do obsługi małych aktualizacji, zaczyna się to wydawać powolne.
Nie mogę sobie wyobrazić, jak ten system wyglądałby z aplikacją obsługującą wiele dzierżawców, podczas gdy 200 botów indeksuje 100 stron jednocześnie.
Laravel doskonale nadaje się do prostych aplikacji. Lumen jest tolerowany, jeśli nie musisz robić niczego wymyślnego, co wymagałoby bzdury z oprogramowaniem pośredniczącym (IE, brak aplikacji dla wielu dzierżawców i domen niestandardowych itp.);
Jednak nigdy nie lubię zaczynać od czegoś, co może wiązać się i powodować 300 ms obciążenia dla posta „hello world”.
Jeśli myślisz „Kogo to obchodzi?”
.. Napisz wyszukiwanie predykcyjne, które opiera się na szybkich zapytaniach odpowiadających na sugestie autouzupełniania w kilkuset tysiącach wyników. To opóźnienie 200-300 ms doprowadzi twoich użytkowników do absolutnego szaleństwa.
php artisan optimize --force