Да - Laravel действительно такой медленный. Ради этого я создал приложение POC. Простой роутер, с формой входа. Я мог получить только 60 RPS с 10 одновременными подключениями на сервере цифрового океана за 20 долларов (оперативная память несколько ГБ);
Настроить:
2gb RAM
Php7.0
apache2.4
mysql 5.7
memcached server (for laravel session)
Я запустил оптимизацию, автозагрузку дампа композитора и т. Д., И он фактически снизил количество запросов в секунду до 43. .
Проблема в том, что приложение отвечает через 200-400 мс. Я запустил AB-тест с локального компьютера, на котором был включен laravel (т.е. не через веб-трафик); а у меня всего 112 RPS; время отклика на 200 мс быстрее, в среднем 300 мс.
Для сравнения я протестировал свое производственное приложение PHP Native, выполняющее несколько миллионов запросов в день на AWS t2.medium (x3, с балансировкой нагрузки). Когда у меня было 25 одновременных подключений с моего локального компьютера к этому через Интернет через ELB, я получил примерно 1200 запросов в секунду. Огромная разница на машине с загрузкой и на странице входа в Laravel.
Это страницы с сеансами (elasticache / memcached), поиском в Live DB (кэшированные запросы через memcached), активами, загруженными через CDN и т. Д. И т. Д. И т. Д.
Что я могу сказать, laravel накладывает на вещи около 200-300 мсек. Это нормально для представлений, созданных PHP, в конце концов, такая задержка допустима при загрузке. Однако для представлений PHP, которые используют Ajax / JS для обработки небольших обновлений, он начинает казаться вялым.
Я не могу себе представить, как эта система будет выглядеть с мультитенантным приложением, когда 200 ботов просматривают 100 страниц каждый одновременно.
Laravel отлично подходит для простых приложений. Lumen терпим, если вам не нужно делать ничего особенного, что потребовало бы ерунды промежуточного программного обеспечения (IE, нет многопользовательских приложений и пользовательских доменов и т. Д.);
Однако мне никогда не нравится начинать с чего-то, что может связывать и вызывать загрузку 300 мс для сообщения "hello world".
Если вы думаете: "Какая разница?"
.. Напишите прогнозный поиск, основанный на быстрых запросах для ответа на предложения автозаполнения в нескольких сотнях тысяч результатов. Эта задержка в 200-300 мс сведет ваших пользователей с ума.
php artisan optimize --force