У меня есть сервер с 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 это невозможно во время пиков трафика.
Есть предложения о том, как решить эту проблему?