У меня очень загруженный сервер Linux MySQL с огромной базой данных.
Сервер обычно работает при средней нагрузке 2 или меньше.
На сервере есть программный рейд (mdadm), который в настоящее время восстанавливается.
Несколько раз сегодня MySQL становится медленнее, а средняя загрузка достигает 200-300-500.
При этом iostat небольшой - максимум 20-30%.
Своп в настоящее время отключен, потому что я думал, что это вызывает проблему.
Перезапуск MySQL не помогает. Если мы перезагрузим сервер, все вернется в норму на пару часов.
В прошлый раз вместо перезагрузки я решил остановить MySQL и сбросить кеши. Я сделал так:
sync; echo 1 > /proc/sys/vm/drop_caches
sync; echo 2 > /proc/sys/vm/drop_caches
sync; echo 3 > /proc/sys/vm/drop_caches
(Да, я сделал три подряд)
К моему удивлению, когда я запустил MySQL, все вернулось в норму.
В чем может быть проблема, и могу ли я как-нибудь автоматизировать «кеши», чтобы сервер не замедлился хотя бы в течение следующих нескольких дней.
После восстановления RAID мы перезапустили сервер еще раз, и все вернулось к норме.
Мы полагаем, что во время восстановления RAID Linux использовала много памяти, а серверу фактически не хватало памяти.
Ответ может быть предоставлен путем публикации на исходный вопрос следующего:
ОЗУ доступно на ХОСТЕ
SHOW GLOBAL STATUS;
SHOW GLOBAL VARIABLES;
SHOW ENGINE INNODB STATUS;