У меня есть производственный сервер, который обычно очень стабилен и работает уже очень давно.
Прошлой ночью внезапно стал показывать очень высокие нагрузки (150+). Деактивация Apache немедленно снизит нагрузку.
Вот результат команды top, вскоре после перезапуска Apache нагрузка уже вернулась к 22,68.
Журналы сервера и вывод mod_status не показывают ничего особенно интересного, кроме того, что запросы начинают резервное копирование из-за высокой нагрузки.
Совершенно не похоже, что есть какая-то необычная нагрузка на сервер с точки зрения запросов, объясняющих внезапную проблему.
Любые идеи?
ОБНОВИТЬ
Вот скриншот соединений mysql из show processlist;
SELECT
. Найдите этот непослушный запрос и откройте вопрос на stackoverflow.com, чтобы обсудить, как его улучшить.Для SHOW PROCESSLIST
вы добавили, мой комментарий - Zzzzzzzzzzz. MySQL ничего не делает - обратите внимание, что практически все они находятся в спящем режиме. «Сон» - это состояние соединения (возможно, из пула соединений), которое ничего не делает, кроме ожидания отправки ему следующего оператора SQL.
Глядя на top
... Похоже, что 2 ядра ЦП используются mysqld, а 6 ядер - Apache. Какого клиента вы используете? Что касается PHP, у вас есть загруженный PHP-код, который необходимо оптимизировать. Начните с рассмотрения каждого цикла, особенно вложенных циклов.
Что касается «внезапной проблемы», ... Подобные ситуации (по моему опыту) накапливаются какое-то время, а затем «внезапно» «прыгают через крышу». В конце концов они обычно расслабляются. Конечно, вы можете убить Apache или mysqld, перезагрузить или остановить клиентов. Между тем, ваши «пользователи» получают ужасный «пользовательский опыт».
Для справки в будущем проблема заключалась в отказе RAID-контроллера. Два идентичных сервера одинакового возраста потеряли свои контроллеры RAID в течение недели.
Не только отказал RAID-контроллер, но и системное уведомление о том, что RAID-контроллер отказал.