Низкий запрос в секунду от комбинации Laravel, Docker и AWS - PullRequest
0 голосов
/ 15 декабря 2018
  • 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

  1. мы используем mysql 5.7 (RDS) для запросов, и это 4 запроса, как я упоминал, 2 R / 2 W и 1 для redis, который является экземпляром эластичной боли
  2. медиана (мс)340 мс в соответствии с locust.io

ОБНОВЛЕНИЕ № 2 Для тех, кто запрашивает недопустимые метрики htop htop screen

Обновление № 3 - включено route:cache - включено config:cache проверил, что в докере Zend OPCache включен opcache enabled confirm settings улучшения, к сожалению, нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...