MySQL ест все ресурсы процессора, даже если нет запросов к нему? Вот решение проблемы
Предыстория.
Почти два месяца меня мучала проблема — ну очень долго работал этот блог.
Что я только ни оптимизировал, что ни профилировал, не помагало.
Перезапускал все важные службы — ничего.
Профилировщик говорит, что все запросы к MySQL на странице отрабатывают меньше чем за 1 секунду, а страница грузится секунд 25-30, при этом если страница грузится из кэша — несколько секунд.
Думал всякое, даже с DNS игрался — не помагало.
И самое странное, что я не мог связать это ни с какими действиями на сервере.
В итоге оказался баг в службе ntpd, который приводил к проблемам в ядре, что приводило к отжиранию почти всего процессорного времени службой mysqld, причём даже при отсутствии запросов к нему. Активировался баг после сдвига времени (Leap second привёл к зависанию некоторых серверов на Linux).
Актуальная на момент написания версия am-linux (для ec2) пробему автоматом не решает.
В итоге помагает запуск следующего скрипта —
1 2 3 4 5 6 7 |
#!/bin/bash # this is a quick-fix to the 6/30/12 leap second bug if [ ! -f /tmp/leapsecond_2012_06_30 ] then /etc/init.d/ntpd stop; date -s "`date`" && /bin/touch /tmp/leapsecond_2012_06_30 fi |
т.е.
1 2 3 4 5 |
touch ~/leap-second.sh nano ~/leap-second.sh [здесь вставить указанный выше текст] chmod +x ~/leap-second.sh sudo ~/leap-second.sh |
В общем, достаточно при выключенном ntpd поменять системное время. Также помогает перегрузка сервера.
Вот ссылка на статью и обсуждение: http://blog.mozilla.org/it/2012/06/30/mysql-and-the-leap-second-high-cpu-and-the-fix/
Что в итоге получаем:
Посмеивался над коллегой, который говорил, что надо подготовиться к сдвигу мирового времени на секунду, а как оказалось, зря.
Similar Posts
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.