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

MySQL зависает, поглощает дисковый ввод-вывод

Использование mySQL 5.0.51 в Solaris.

Иногда кажется, что MySQL «застревает». Использование диска на сервере резко возрастает до 98% из-за чтения. Я использовал dtrace (в частности, набор инструментов DTrace - iosnoop), чтобы отследить, какие процессы использовали все чтения. Mysql вызывает tablename.TDM сотни раз в секунду. Нагрузка на веб-сервер не превышала средней. Не было запущенных cronjobs и других утилит, таких как mysqldump или что-то еще. Это настройка репликации главный / подчиненный.

В качестве исправления, подстроенного жюри, я изменил таблицу mysql с tablename на tablename2, а затем обратно на tablename.

Это временно устранило проблему и "открепило" mysql. Использование диска снова снижается, и dtrace больше не показывает сотни операций чтения «tablename.TDM» в секунду.

У меня была пара идей:

1. MySQL version bug 
2. Infinite loop somewhere in my application (which i'm not sure how likely this is) 
3. ?? 

Кто-нибудь видел это раньше или имел какое-либо представление?

Спасибо

Переименование таблиц наугад - ужасная идея.

Посмотрите список процессов MySQL, чтобы определить, какие процессы загружают систему. Использование:

show full processlist;

Также есть такие утилиты, как mytop и mtop которые удобны.

Редактировать 1

Изоляция будет зависеть от вашей среды. Откуда связи?

Если localhost может быть только системным скриптом или у вас есть приложение, обслуживаемое вашей БД?

Если удаленный хост, какую функцию выполняет этот удаленный хост? Он отличается от других? Есть ли скрипты или это только приложение?

Выявить источник, но не обязательно причину, должно быть довольно быстро и просто.