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

Внезапное замедление MySQL, какие потенциальные причины?

Несколько дней назад mysql внезапно стал очень медленным: запросы занимали более 10 секунд, когда раньше они выполнялись менее 100 мс ... Это длилось около часа, а затем скорость снова стала нормальной. Что могло вызвать такую ​​проблему?

Еще немного информации: версия mysql - 5.0.51a. База данных mysql находится в выделенном ящике с оперативной памятью 1,5 ГБ. Когда сервер mysql работал медленно, своп не использовался.

Вот mysqlreport из базы данных http://pastebin.com/au6yMWqQ Ни один из кешей не заполнен ..

Я заметил, что DNS-сервер, используемый сервером для разрешения имени хоста, в последнее время иногда был немного медленным. Может ли это повлиять?

Спасибо

Причиной этого может быть множество факторов.

Медленный преобразователь не должен влиять, если вы можете измерять запросы сами по себе. Однако медленный преобразователь определенно может иметь эффект при подключении к серверу - если пользователи получают доступ на основе имени хоста, с которого они подключаются. MySQL также имеет возможность регистрировать имена хостов соединений.

В mysql-report мало говорится об индексах. Что я обычно делаю, когда вижу, что это происходит, так это то, что я беру один из запросов, на которые уходит много времени, и запускаю EXPLAIN в теме. Если он не использует какие-либо индексы и должен выполнить полное сканирование таблицы - я бы посмотрел, смогу ли я добавить индекс, который ускорит его. Раньше я видел, как индексы исчезали случайно (кто-то случайно удалил их, сценарий обновления удалил их и не вернул обратно, или что-то подобное).

Сервер может быть перегружен разными способами:

  • Что говорят ваши показатели ЦП? Он застрял в IOWait, системном времени, времени пользователя или действительно простаивает?
  • В зависимости от базы данных это может быть кеш холодных запросов, которому требуется некоторое время, чтобы нагреться после перезапуска сервера. Это маловероятно, если данные сильно меняются, но может произойти, если они используются в основном для поиска.

Это также может быть серия запросов, которая блокирует таблицу, предотвращая выполнение поиска в течение ~ 10 секунд за раз. Вы можете получить информацию об этом, если записываете медленные запросы к файлу.

Это может быть ошибка MySQL. Доказать это - довольно тяжелое бремя, но это случается.

Вам нужно гораздо больше данных, чтобы выяснить причину этого. Вам нужны показатели ЦП, памяти, метрики MySQL и т. Д. Могу я предложить инструмент мониторинга, такой как Munin? Есть очень хороший плагин MySQL, который предоставит вам интересные данные, когда это происходит.

Вероятно, самый быстрый способ почувствовать, что может потреблять ресурсы на вашем сервере MySQL, - это простая команда:

SHOW PROCESSLIST;

Он расскажет вам, какие процессы MySQL активны, как долго они были активны и чем они занимаются. Каждый раз, когда с моим сервером MySQL что-то шло не так, SHOW PROCESSLIST был моей первой линией «защиты».