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