Прекращение простоя соединений mysql

Я вижу, что много подключений открыты и долгое время простаивают, скажем, 5 минут.

Есть ли какое-либо решение для его завершения или закрытия с сервера без перезапуска службы mysql?

Я поддерживаю устаревшую систему PHP и не могу закрыть соединения, которые установлены для выполнения запроса.

Должен ли я уменьшить значения таймаута в файле my.cnf по умолчанию до 8 часов?

# default 28800 seconds interactive_timeout=60 wait_timeout=60 

Ручная очистка:

Вы можете убить processid.

 mysql> show full processlist; +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ | Id | User | Host | db | Command | Time | State | Info | +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ | 1193777 | TestUser12 | 192.168.1.11:3775 | www | Sleep | 25946 | | NULL | +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ mysql> kill 1193777; 

Но:

  • приложение php может сообщать об ошибках (или веб-сервере, проверять журналы ошибок)
  • не исправить то, что не сломано – если вы не слишком близки к соединениям, просто оставьте их.

Автоматическое очистное обслуживание;)

Или вы настроите свой mysql-сервер, установив более короткий тайм-аут на wait_timeout и interactive_timeout

 mysql> show variables like "%timeout%"; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | connect_timeout | 5 | | delayed_insert_timeout | 300 | | innodb_lock_wait_timeout | 50 | | interactive_timeout | 28800 | | net_read_timeout | 30 | | net_write_timeout | 60 | | slave_net_timeout | 3600 | | table_lock_wait_timeout | 50 | | wait_timeout | 28800 | +--------------------------+-------+ 9 rows in set (0.00 sec) 

Установить с помощью:

 set global wait_timeout=3; set global interactive_timeout=3; 

(а также установить в вашем файле конфигурации, когда ваш сервер перезапустится)

Но вы относитесь к симптомам, а не к основной причине – почему открываются соединения? Если PHP-скрипт завершен, они не должны закрываться? Убедитесь, что ваш веб-сервер не использует пул соединений …

Я не вижу никаких проблем, если вы не управляете ими, используя пул соединений.

Если вы используете пул соединений, эти соединения повторно используются вместо инициирования новых подключений. поэтому, в основном, оставляя открытые соединения и повторно использующие их, это менее проблематично, чем повторное создание их каждый раз.

  • Как дождаться нажатия клавиши в R?
  • Использование async-ожидания в .net 4
  • Есть ли достойная функция ожидания в C ++?
  • Задержки времени в VBA
  • Правильно Попробуйте ... Синтаксис Catch с использованием Async / Await
  • Ожидание нескольких SwingWorkers
  • Как создать функцию pause / wait с помощью Qt?
  • Как дождаться завершения всех задач в ThreadPoolExecutor, не закрывая Executor?
  • Простой сценарий с использованием wait () и notify () в java
  • Как подождать, пока ответ поступит из запроса $ http, в angularjs?
  • Как проверить asynchronous метод с помощью NUnit (или, возможно, с другой структурой)?
  • Давайте будем гением компьютера.