Задать вопрос
@andreyvlru
менеджер-программист

Странные временные тормоза MySQL. Какая причина?

Периодически начинает резко тормозить MySQL
вырастает количество slow запросов
перестает хватать коннектов

По нашим предположениям возрастает количество тяжелых запросов, но отловить их и подтвердить или опровергнуть это мы не можем

Проблема резко и быстро решается рестартом mysql демона - до следующего раза. Но хотелось бы понять причины и решить вопрос кардинально.

Сервер 128 Gb
база на SSD дисках

Интересные графики ниже

b5d6c9b57f094e13a57f6686eb9d6bef.pngafbf20f99a4046a29fb865d155e1b286.pngc205f6c4dc3d4c43868c2133617c845d.pnge3fe8bf1d4be42ed8dcda9cb67f50761.png4f8bd2a7ddf6413c8cdaaefeb73d8c34.png
  • Вопрос задан
  • 859 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
@andreyvlru Автор вопроса
менеджер-программист
В процессе решения мигрировали на 5.6, лучше точно не стало
возможно производительность даже ухудшилась (ну или так совпало)

потом вышли на запрос, который обнулял 250 тыс строк (считай всю таблицу).
Сам запрос простейший: update a set a.x = 0;
Он выполнялся 20 секунд!. И в процессе выполнения в лог начинали сыпаться slow queries.

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

Остается вопрос, почему это все раньше работало....
подозреваю появление зависимостей которым нужна таблица, а она в этот момент обновляется. Пока они ждут, мгновенно вырастает очередь коннектов, они упираются в лимит и все падает

----

Все оказалось совсем не так. База не тормозила, тормозили веб-сервера

Цепочка примерно следующая
В час пик на веб серверах начинает увеличиваться время ответа. С 50-100ms до 1000-1500ms.
Каждый запрос висит дольше обычного и дольше занимает коннект к MySQL. В итоге все возможные коннекты выбираются и все упирается в max_mysql_connection

Веб-сервера хоть и работают медленнее, но все равно потихоньку шевелятся. У них количество допустимых процессов выше чем максимум коннектов к БД. В итоге мы думали что тормозит база. Там еще было некоторое количество slow запросов, но они видимо всегда были, просто пока не было ошибок мы на них внимания не обращали.

Проблему решаем следующим образом
1. Несколько перебалансировали раздачу нагрузки по веб-серверам, чтобы процессор равномернее использовался
2. Заказли еще один веб-сервер
3. Оптимизируем "тяжелые" страницы

P.S. Тем не менее TRIM на серверах бд все равно нужен и мы будем настоятельно просить инженеров хостера включить его
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
EnterSandman
@EnterSandman
Эникей
кореллируйте скачки с нагрузкой на память и скорее всего винт
Ответ написан
как дежурный вариант создание бэкапа не совпадает по времяни ?
систематичное мероприятие ?
Попробуй
iotop -oka в это время запустить че покажет
и че покажет
mytop
Ответ написан
@polozad
log-slow-queries включить что-то мешает?
Ответ написан
opium
@opium
Просто люблю качественно работать
Включаете слоу квери лог, смотрите в момент повышения нагрузки какие первые медленные запросы. Оптимизируете их.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы