Назад | Перейти на главную страницу

Проблемы со средней нагрузкой при обслуживании 40 миллионов запросов в день с помощью php-fpm, nginx

У меня есть сервер с FreeBSD (16 ядер с HT, SSD, 32 ГБ ОЗУ), который ежедневно получает около 40 миллионов HTTP-запросов. Все запросы обслуживаются nginx + php-fpm.

На этих графиках вы видите, что у нас проблемы во время пика трафика. Я не системный администратор. Пожалуйста, объясните мне, что такое «Активные соединения», «Запись», «Ожидание», «Чтение» и почему «Запись» увеличивается, когда сервер не может быстро обслуживать запросы?

Вот еще несколько графиков с процессором, памятью и средней нагрузкой.

Как видите, с процессором и памятью ничего странного не происходит, но средняя загрузка тоже имеет пик.

Во время этого пика средней нагрузки я заметил, что на php-fpm.sock есть необслуживаемая очередь.

netstat -Lan | grep php-fpm unix 2525/0/32246 /tmp/php-fpm.sock

Количество участников в очереди варьируется от 0 до 12000. Если значение равно 0 - все в порядке, и я получаю HTTP-ответ через 60-100 мс. При значении 5000-12000 это может занять до 3-10 секунд.

Я также проверил, нет ли необычных процессов в top, но ничего не нашел.

Здесь top снимок экрана, сделанный несколько минут назад (сейчас все в порядке, нет пика трафика):

Мой вывод: по графикам CPU и памяти могу сказать, что этот сервер может обслуживать все больше и больше запросов, но из-за неоптимальной работы php-fpm это невозможно во время пиков трафика.

Есть предложения о том, как решить эту проблему?