Я использую гем Sequel для подключения к базе данных. Однако сервер БД удален, поэтому сначала мне нужно войти в систему через SSH.
Мой сценарий Ruby настроен на каждые пять минут SSH, пингование базы данных, а затем закрытие SSH-соединения. (SSH обрабатывается Net::SSH::Gateway.)
Но недавно я получил ошибку «слишком много подключений» в MySQL. При проверке списка процессов MySQL я обнаружил кучу спящих соединений из скрипта Ruby. Поэтому я добавил в свой скрипт строку db.disconnect
для отключения от базы данных перед закрытием SSH-соединения, и это, похоже, исправило ситуацию.
Мой вопрос: не закрываются ли соединения с базой данных автоматически? Почему была куча спящих SQL-соединений?