У меня апач с модулем PHP-FPM, 8 ядер процессора. Средняя общая загрузка ЦП составляет около 75% ЦП, в основном из-за MySQL, см. Экран.
На самом деле сейчас нагрузка немного меньше, чем обычно.
Но проблема в том, что когда я открываю домашнюю страницу, загрузка случайным образом составляет около 1 с (я думаю, время до первого байта).
Я думал, что это может быть ожидание из-за подключения к mysql и т. Д., Но кажется, что дополнительное время ожидания - это время, прежде чем PHP получит голос от Apache.
Я сделал два интересных теста:
- Простой html-файл (пустой файл с каким-то словом) загружается 100 мс.
- Простой php-файл (без подключения к mysql и т. д., просто пустой php-файл с простым эхом) загружается примерно за 1 с.
Таким образом, проблема, очевидно, связана с комбинацией php или apache + php.
Почему и как исправить.
Я попытался увеличить некоторые настройки PHP fpm, например
вечера = динамический
pm.max_children = 5
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 200
Переместите значения от бита по умолчанию вверх. Да, загрузка процессора мгновенно увеличилась почти до 99% всех процессоров, но скорость не была фиксированной + сервер был полностью загружен.
Что делать?
Кстати, из мод-статуса Apache я вижу, что в настоящее время обрабатывается 25 запросов в секунду (хотя обычно удваивается). И я не думаю, что должен ждать 1 с, чтобы загрузить пустой php-скрипт с 8 ядрами процессора.
Версия сервера: Apache/2.4.29
PHP7.2-fpm
MPM-событие
8 ВЦП, 16 ГБ ОЗУ
Кстати, пустой файл php также занимает около 3-4 секунд, а не только 1 секунду.