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, а затем запустите его. Возможно, у вас есть один или два потока, которые остаются открытыми, что приводит к изменению значения.