■サーバが重い・サーバに繋がらない 4
CloudWatchを確認すると、RDSのCPU使用率が60%ほどに達していた
AWSのコンソールからスロークエリログをダウンロードして確認
(テーブルに記録している場合、SQLでスロークエリログを確認する)
select * from `sh_headers` where `unit_id` = '32' and `sh_headers`.`no` = '4452013' and `dlv_nt_no` = '4452013' limit 1;
のような、検索のスロークエリログが大量に記録されている
このクエリをNavicatで実行すると1.112秒かかる。7秒以上かかるときもある。遅い
使用していたRDSは db.t2.large。t2系なので、CPUクレジットを確認すると枯渇していた
CPUCreditBalanceで残高、CPUCreditUsageで使用状況を確認できる
(監視対象に入れていなかったが、これも監視対象に入れておくと良い。その他、AWSならではな監視項目があるかもなので、ひととおり確認する)
CPU クレジット - T2 インスタンス - Amazon Elastic Compute Cloud
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/t2-instances.html#t2-instances-cpu-credits
引き続き、CPUクレジットを消費した原因を調査
MySQLの以下のコマンドでプロセスを確認すると、ゾンビプロセスがいた
SHOW PROCESSLIST;
処理時間が非常に長いのでKILLした(らしい)
すぐにRDSのCPU使用率が下がり始めた
直接の原因は最近行った改修内容と思われる
改修以降にCPU負荷が高くなったため、該当箇所を再調整して様子を見る