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

Сервер MySQL зависает без причины

У меня есть сервер, на котором запущен веб-сайт с серверной базой данных MySQL (точнее - 5.5.37-MariaDB, для debian-linux-gnu на x86_64).

Иногда он перестает принимать соединения, и скрипты веб-сайта сообщают, что «невозможно подключиться к серверу». После перезапуска сервера MySQL он некоторое время работает нормально (до нескольких дней).

syslog, mysql.error и dmesg не показывают связанных ошибок. Журнал медленных запросов, однако, показывает, что в какой-то момент запросы выполняются все медленнее и медленнее (начиная примерно с 1 секунды и заканчивая 70). После перезапуска MySQL те же запросы выполняются немедленно.

Как я могу это исправить или хотя бы определить причину проблемы?

Когда сервер зависает беги strace -fp <pid of mysql>

Это покажет, какая команда ждет. Вероятно, это будет чтение с номером

lsof -p <mysql pid> отобразит, что это за число на самом деле.

Трудно сказать, не находясь на сервере, когда он ломается, если в логах больше нечего уйти

Включите ведение журнала медленных запросов в my.cnf, чтобы определить, где находятся ваши узкие места, и подумайте, если max_used_connections больше, чем max_connections.

SHOW GLOBAL VARIABLES LIKE 'max_connections';
SHOW GLOBAL STATUS LIKE 'max_used_connections';