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

Параметр MySQL «wait_timeout» не сохраняет

MySQL в настоящее время установлен на wait_timeout 28800 на нашем сервере, что, как я понимаю, используется по умолчанию. Я пытался изменить это значение на 60, как рекомендовал консультант, но изменения, похоже, не заставят себя долго ждать. Вот что я пробовал, войдя в Linux как root и MySQL как пользователь базы данных:

1) Вход в MySQL и:

show variables like '%wait_timeout%';
set wait_timeout=60;

2) Отредактируйте файл my.cnf в / etc и добавив следующую строку как в [mysqld], так и в [mysqld_safe]:

wait_timeout=60

Когда я пробую №1 и сразу после этого выбираю показывать переменную wait_timeout, она отображается правильно как 60. Однако, если я подожду минуту или две, она снова вернется к 28800. Когда я пробую №2, кажется, что этот вариант вообще не работает, даже после перезапуска Apache и MySQL.

Кажется, что my.cnf - единственная такая версия файла, которую я могу найти.

Я пробовал следующее, но аргументов не видно:

mysql --print-defaults

При перезапуске Apache я использовал:

/usr/sbin/apachectl graceful

При перезапуске MySQL я использовал:

/etc/init.d/mysqld restart

Любые идеи? :-(

Боюсь, вы могли столкнуться с одной из нескольких ошибок MySQL. Видеть этот отчет об ошибке.

Если я все правильно понял, клиент командной строки MySQL заставляет mysqld использовать interactive_timeout вместо того wait_timeout.

Что вам возвращает следующий запрос?

SELECT @@global.wait_timeout, @@session.wait_timeout;

1. Отредактируйте my.cnf (файл конфигурации MySQL).

Ubuntu 16.04

 sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

Debian

 sudo vi /etc/mysql/my.cnf

Centos

 sudo vi /etc/my.cnf

2. Найдите конфигурацию тайм-аута и настройте ее в соответствии с вашим сервером.

[mysqld]
wait_timeout = 31536000
interactive_timeout = 31536000

3. Сохраните изменения и выйдите из редактора.

4. Перезапустите MySQL, чтобы изменения вступили в силу следующим образом:

sudo /etc/init.d/mysql restart

Apache не участвует в этом процессе, поэтому вы можете пропустить все, что связано с ним.

Что касается MySQL, пытались ли вы посмотреть, есть ли другие файлы my.cnf, которые могут переопределять базовый? Кроме того, вместо перезапуска фактически выключите сервер MySql, а затем запустите его. Возможно, у вас есть один или два потока, которые остаются открытыми, что приводит к изменению значения.