Настройка сервера для высокопроизводительного приложения laravel
Попытка изменить конфигурацию сервера для поддержки большего количества одновременных пользователей в приложении laravel. Несмотря на внесение разнообразных изменений, обнаружено, что время отклика не улучшается. Примечание. JMeter используется для нагрузочного тестирования API-интерфейсов приложения.
Результаты теста
Пример использования 1:
2 пользователя отправляют запросы в течение 20 секунд. Время отклика API: 200 мс
Пример использования 2:
20 пользователей отправляют запросы за 20 секунд. Время ответа API: 6,5 с
Конфигурация сервера:
CentOS, 4 ГБ ОЗУ, 2 ядра ЦП (t3.medium)
- Веб-сервер: Apache/2.4.6
- Версия PHP: 7.4.6, Версия Laravel: 7.27.0, Отладка Laravel: Включена
- База данных: MariaDB Ver 15.1
Примечание. API-интерфейсы, тестируемые под нагрузкой, не используют БД. В основном это делается для того, чтобы база данных не участвовала в уравнении - приветствуются предложения по оптимальным настройкам БД.
Увеличил конфигурацию сервера до
xlarge, 2xlarge, and 4xlarge.
. Несмотря на это, никаких существенных улучшений замечено не было. Как ни странно, количество ошибок резко возросло.
Сделаны следующие оптимизации / изменения:
- PHP - используйте opcache.
- PHP-FPM: запуск нескольких потоков, серверов и т. Д.
- Apache: Запуск в режиме работы по событию.
Какие изменения следует внести в конфигурацию сервера, чтобы запросы обрабатывались быстрее? Поможет ли выбор nginx и выполнение необходимых оптимизаций быстрее обрабатывать запросы?