Sí, Laravel ES realmente tan lento. Creé una aplicación POC por este motivo. Enrutador simple, con un formulario de inicio de sesión. Solo pude obtener 60 RPS con 10 conexiones simultáneas en un servidor oceánico digital de $ 20 (pocos GB de RAM);
Preparar:
2gb RAM
Php7.0
apache2.4
mysql 5.7
memcached server (for laravel session)
Ejecuté optimizaciones, el compositor volcó la carga automática, etc., y en realidad bajé el RPS a 43-ish .
El problema es que la aplicación responde en 200-400ms. Ejecuté la prueba AB desde la máquina local en la que estaba laravel (es decir, no a través del tráfico web); y obtuve solo 112 RPS; con un tiempo de respuesta 200ms más rápido con un promedio de 300ms.
Comparativamente, probé mi aplicación PHP Native de producción ejecutando algunos millones de solicitudes al día en un AWS t2.medium (x3, carga balanceada). Cuando hice 25 conexiones simultáneas desde mi máquina local a eso a través de la web, a través de ELB, obtuve aproximadamente 1200 RPS. Gran diferencia en una máquina con carga frente a una página de "inicio de sesión" de Laravel.
Estas son páginas con sesiones (elasticache / memcached), búsquedas de bases de datos en vivo (consultas en caché a través de memcached), activos extraídos de CDN, etc., etc., etc.
Lo que puedo decir, laravel se pega alrededor de 200-300ms de carga sobre las cosas. Está bien para las vistas generadas por PHP, después de todo, ese tipo de retraso es tolerable en la carga. Sin embargo, para las vistas de PHP que usan Ajax / JS para manejar pequeñas actualizaciones, comienza a sentirse lento.
No puedo imaginar cómo se vería este sistema con una aplicación de múltiples inquilinos mientras 200 bots rastrean 100 páginas cada uno al mismo tiempo.
Laravel es ideal para aplicaciones simples. Lumen es tolerable si no necesita hacer nada elegante que requiera tonterías de middleware (IE, sin aplicaciones de múltiples inquilinos y dominios personalizados, etc.);
Sin embargo, nunca me gusta comenzar con algo que pueda enlazar y causar una carga de 300ms para una publicación de "hola mundo".
Si estás pensando "¿A quién le importa?"
.. Escriba una búsqueda predictiva que se base en consultas rápidas para responder a sugerencias de autocompletar en unos cientos de miles de resultados. Ese retraso de 200-300ms volverá locos a sus usuarios.
php artisan optimize --force