接続数関連
現在の接続数
show status like 'Threads_connected';
最大接続数
show global variables like 'max_connections';
接続時間
コネクション関連
30分以上接続しているコネクションを抽出
但し、環境によっては必要な場合あるため、必ずuserは確認すること!(ex. rdsadmin)
SELECT * FROM information_schema.PROCESSLIST WHERE time >= 1800 ORDER BY time;
不要なコネクションを止める
上のコマンドの実行結果で得たID列の値を入れて殺る
kill ID;
processlistとinformation_schema.PROCESSLISTの違い
項目 | processlist | information_schema.PROCESSLIST |
---|---|---|
確認方法 | show processlist | select * from information_schema.PROCESSLIST |
詠唱文表示数 | 100文字まで | 全て |
スレッドの状態 | Stateカラムで簡易管理 | Stageカラムで詳細管理 |
優先度 | 非表示 | 表示有 |
用途 | ぱぱっと | 詳細確認 |
その他
接続が常にmax_connectionのまま
SLEEPが動いてないのでは?
→基本はそんなことない(特殊設定していたらしらないけど)。
例えば、コネクションプールみたいなの利用していたら、切れたらまた接続しにやってくる。
そのため、コネクション切断しても再度接続して常に満員御礼状態になる。
→max_connectionsの設定値を増やすか、接続元の接続数を減らす必要がある。
接続数エラーはクライアント側でも分かるの?
分からない場合がある。
MySQL5.7に対して、A5:SQL Mk-2で接続するとエラーと表示されたが、MySQL Workbench 8.0ではエラーとしか表示されなかった。
そのため、利用するクライアントの種類や、"バージョン"によってはエラーが表示されないかもしれない。
(上記ケースは、MySQL Workbench8.0では接続してもエラーになる古いMySQL5.7だったというオチな気がしている)
show statusとshow global variablesの違い
- show status:現在値を閲覧するコマンド
- show global variables:設定値を閲覧するコマンド