Как долго «слишком долго» для MySQL Connections для сна?

38

Я вошел на свой сервер, чтобы проверить состояние базы данных, и заметил, SHOW PROCESSLIST;что существует большое количество спящих подключений, которые очень старые.

введите описание изображения здесь Какой продолжительности должен быть лимит времени соединения, прежде чем соединение должно быть разорвано?

Как установить ограничение по времени в MySQL 5.0.51a-3ubuntu5.4?

Заметка:

Я использую PHP 5.2.x и Symfony Framework 1.2.

Патрик
источник
Подробный блог: sforsuresh.in/how-to-delete-sleeping-processes-in-mysql
Суреш Камруши,

Ответы:

53

mysqld истечет время ожидания соединения с базой данных на основе двух параметров сервера:

Оба по умолчанию составляют 28 800 секунд (8 часов).

Вы можете установить эти параметры в /etc/my.cnf

Если ваши соединения постоянны (открыты через mysql_pconnect), вы можете понизить эти цифры до чего-то разумного, например, 600 (10 минут) или даже 60 (1 минута). Или, если ваше приложение работает нормально, вы можете оставить значение по умолчанию. Это зависит от вас.

Вы должны установить их следующим образом my.cnf(вступает в силу после mysqldперезапуска):

[mysqld]
interactive_timeout=180
wait_timeout=180

Если вы не хотите перезапускать mysql, выполните эти две команды:

SET GLOBAL interactive_timeout = 180;
SET GLOBAL wait_timeout = 180;

Это не закроет уже открытые соединения. Это приведет к закрытию новых подключений через 180 секунд.

RolandoMySQLDBA
источник
так в /etc/my.cnf я бы просто положил wait_timeout=180?
Патрик
@ Патрик Да, но вам нужно установить значения атрибутов interactive_timeout и wait_timeout равными 180. Я обновил свой ответ для вашего ответа.
RolandoMySQLDBA
Этот файл может быть в другом месте dev.mysql.com/doc/refman/5.1/en/option-files.html, и эти параметры не могут быть
объяснены