Закройте соединение mysql через сценарий оболочки

Я запускаю сценарии оболочки, в которых есть несколько операторов mysql -u <> -e "select * from tbl". Нужно ли мне явно закрывать соединение mysql через сценарий оболочки? Если да, не могли бы вы рассказать мне, как это сделать?

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

Спасибо

Источник
  • 0
    Согласно mysql --help, флаг -e выполняет запрос и ВЫХОДИТ. "-e, --execute = name Выполнить команду и выйти. (Отключает --force и файл истории.)". Я не думаю, что это из-за сценария оболочки. Вы можете видеть спящие соединения на mysql на основе вашей конфигурации mysql с минимальным размером открытого пула соединений.
  • 0
    Спасибо за обновление. Я также попытаюсь отладить его с этого фронта
  • 0
    Завершение процесса освобождает все его TCP-соединения на уровне TCP. Связи "сна", которые вы видите, не связаны.
Codelisting
за -1 против

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

В любом случае вы можете убить любое соединение по его идентификатору, который можно определить по:

mysql -e 'show processlist;'

Идентификатор будет в первом столбце, и вы можете убить их следующим образом:

mysql -e 'kill $ID'

И убить их всех за один раз:

for i in $(mysql -e "show processlist" | awk '/Sleep/ {print $1}'); do mysql -e "KILL $i;"; done

Codelisting
Популярные категории
На заметку программисту