- Laravel 5.5
- Php 7.0
- AWS 8 cpu / 16GB
- Докер с nginx / php внутри.
Iесть API, который обслуживает oauth2.0 через паспорт.Это работало нормально для трафика с низким объемом, но так как мы увеличили трафик, он прогнулся.У нас есть приложение для докера на машине EC2 с 8 процессорами / 16 ГБ RAM / SSD.Все, что служит API - это проверка электронной почты / пароля / client_id / client_secret, затем запись токена в БД и пользовательских данных в хранилище redis.(2 чтения / 2 записи / 1 записи в Redis).Он возвращает JWT access_token и refresh_token (плюс ttl)
Приложение laravel докеризуется через докер ubuntu + nginx + 7.0php-fpm с необходимыми расширениями.(это тот же самый dockerize, который Крис Фидао создал в своей серии shippingwithdocker)
Я запустил тестирование сервера locust.io (на другой машине ec2 на AWS) при 200 пользователях / 10 штрихов / сек и 100% загрузки ЦП на всехсердечники.Если я увеличу его до 255ish - у меня начнутся 502 плохих шлюза.Я проверяю журнал php и php-fpm больше не может обслуживать звонки.Я внес изменения в файл php-fpm.conf: pm = ondemand с 200 дочерними элементами, 1000 max request.Я могу достичь еще 300 пользователей при 15 загрузках в секунду при 100% загрузки процессора.В качестве еще одного теста - то, что я сделал, взяло запрос чтения RAW-базы данных + необработанный запрос вставки и удалил запись redis - просто записало его как часть закрытия routs / api.php и позволило разорвать.Мне удалось получить до 500 пользователей примерно со скоростью 134 запроса в секунду (без контроллеров)
Мой вопрос: эти показатели кому-то кажутся неправильными?У меня 8 ядер / 16 ГБ, и я получаю низкую пропускную способность?после нахождения блога Тейлора Отвелла о том, как ему удается набрать 500+ запросов / сек на 2 ГБ оперативной памяти в Digital Ocean - есть ли настройка, которую я должен проверить?Я просто пытаюсь убедиться, что это мои последние метрики и эффективно для получения большего количества запросов - я должен добавить еще один сервер под балансировщик нагрузки.
ОБНОВЛЕНИЕ # 1
- мы используем mysql 5.7 (RDS) для запросов, и это 4 запроса, как я упоминал, 2 R / 2 W и 1 для redis, который является экземпляром эластичной боли
- медиана (мс)340 мс в соответствии с locust.io
ОБНОВЛЕНИЕ № 2 Для тех, кто запрашивает недопустимые метрики htop
Обновление № 3 - включено route:cache
- включено config:cache
проверил, что в докере Zend OPCache включен улучшения, к сожалению, нет.