動かざることバグの如し

近づきたいよ 君の理想に

MySQLでSleepのコネクションを一発で殺す方法

MySQLでSleep状態のコネクションを一気に開放したくなるときってありますよね?(ない

まぁ主にRailsたんが勝手にコネクションプーリング張ってDBの接続数圧迫してしまってるときに減らす目的だが

環境

手順

まず対象のDBにログインして

select * from information_schema.processlist where Command = "Sleep"

でSleepになっているコネクションを抽出 *をつけているのは本当に殺していいのかの確認

問題なさそうなら

select *,concat('KILL ',id,';') from information_schema.processlist where Command = "Sleep"

を実行 すると

kill xxxxx;
kill xxxxx;

のようにkillコマンドがひたすら表示されるのでそれをコピって実行

Sequel Proなら結果を貼り付けて右側の「すべてのクエリを実行」をクリックすれば簡単

再度select * from information_schema.processlist where Command = "Sleep"を実行して減っているか確認

参考リンク