Баг в OPcache PHP-FPM "раздувал" воркеры до 600 МБ на сервере с 5500 сайтами
На сервере с 5500 сайтами WordPress был обнаружен критический баг в OPcache PHP-FPM, который приводил к раздуванию воркеров до 600 МБ и последующему падению сервисов из-за нехватки памяти.
Неисправность, изначально принятая за DDoS-атаку, проявлялась в том, что каждый новый воркер PHP-FPM с первого же запроса начинал потреблять около 600 МБ оперативной памяти. Это быстро исчерпывало ресурсы сервера (125 ГБ RAM) и вызывало срабатывание OOM-killer, который последовательно останавливал базу данных MariaDB и веб-сервер nginx, приводя к недоступности сайтов.
Причина оказалась в баге OPcache, который активировался при сбросе кеша под нагрузкой. В данном случае кеш сбрасывался плагином Yoast SEO во время обновления на части из 5500 сайтов. Проблема не была связана с массовым обновлением, а скорее с поэтапным "догоняющим" обновлением, затрагивающим сотни ресурсов. Это демонстрирует, как кажущиеся незначительными операции могут вызвать каскадный сбой при определённых условиях.
Инцидент подчёркивает важность детальной диагностики при проблемах с производительностью сервера. Изначально подозрение на внешнюю атаку (DDoS) оказалось ложным, и только глубокий анализ использования ресурсов выявил внутренний конфликт в стеке технологий. Такие случаи показывают, что системным администраторам необходимо тщательно проверять взаимодействие компонентов ПО, особенно на высоконагруженных серверах.
Решение проблемы потребовало устранения условия, при котором срабатывал баг OPcache, что предотвратило неконтролируемый рост потребления памяти воркерами PHP-FPM. Это позволило восстановить стабильную работу всех 5500 сайтов на сервере.
Часто задаваемые вопросы
Что стало причиной падения сайтов на сервере?
Причиной падения сайтов стал баг в OPcache PHP-FPM, который приводил к чрезмерному потреблению памяти (около 600 МБ на воркер) и нехватке ресурсов сервера.
Как проявлялся баг в OPcache?
Баг проявлялся в том, что каждый новый воркер PHP-FPM с первого же запроса потреблял до 600 МБ оперативной памяти, что быстро исчерпывало 125 ГБ RAM сервера и приводило к сбоям.
Какое действие провоцировало срабатывание бага?
Баг срабатывал при сбросе кеша OPcache под нагрузкой. В данном случае сброс кеша происходил при обновлении плагина Yoast SEO на части из 5500 сайтов.
Почему проблему не сразу выявили?
Изначально проблему ошибочно приняли за DDoS-атаку, и только детальный анализ использования ресурсов сервера выявил внутренний программный конфликт между OPcache и PHP-FPM.
Источник: Habr · Rusability ИИ


Комментарии (0)
Без регистрации. Комментарии проверяются автоматически перед публикацией.
Пока нет комментариев. Будьте первым!