現象
ApsaraDB RDS for MySQL インスタンスの IOPS 使用率が高くなることがあります。本トピックでは、その主な原因と解決策について説明します。
原因
-
データキャッシングやソート用のメモリが不足しているため、過剰な物理 I/O が発生します。
-
非効率なクエリが、大量の行をスキャンします。
ソリューション
IOPS 使用率が高い問題を解決するには、以下のいずれか、または両方の方法を利用できます。
-
インスタンス診断レポートの生成 (推奨)
-
問題のあるクエリの終了
インスタンスの現在の診断レポートの表示
-
DMS コンソールで、データベースにログインします。
-
[パフォーマンス] > [ワンクリック診断] の順に選択します。
-
DAS コンソールでは、インスタンスのアクティブセッション、デッドロック、スロークエリを表示できます。
[ワンクリック診断] の概要ページには、階層的なトポロジーでデータベースのヘルスステータスが表示されます。このページには、アクティブセッション、デッドロック、スロークエリに加えて、その他いくつかの診断パネルも表示されます。これらには、[アクティブセッション] (接続数、最大許容接続数、接続使用率)、[リソース診断] (CPU 使用率、メモリ使用率、IOPS 使用率)、[QPS] (平均値、ピーク値、前月比/前年比の増加率)、[すべての SQL]、[スペース使用量] (ディスク使用率、残りの利用可能領域、1 日あたりの平均増加量) などが含まれます。[デッドロック] と [スロークエリ] パネルは、問題を迅速に特定できるようハイライト表示されます。
-
モジュールの詳細リンクをクリックして、最適化案を表示し、適用します。
問題のあるクエリの終了
DMS コンソールのインスタンスセッション機能を使用するか、コマンドを実行することで、問題のあるクエリを特定して終了できます。物理読み取り回数が多いクエリ (Physical_sync_read および Physical_async_read) を終了することを推奨します。
-
RDS インスタンスが最大接続数に達した場合、DMS コンソールまたは MySQL コマンドラインツールを使用してインスタンスにログインすることはできません。
-
DMS コンソールまたは MySQL コマンドラインツールを使用して接続できない場合は、RDS コンソールで
wait_timeoutパラメーター (単位:秒) を 60 などの小さい値に設定してください。この操作により、60 秒を超えてアイドル状態であった接続が切断され、リソースが解放されてインスタンスにログインできるようになります。
インスタンスセッション機能を使用した問題のあるクエリの終了
診断レポートが利用できない場合、またはその提案をすぐに適用できない場合は、まず DMS コンソールのインスタンスセッション機能を使用して、問題のあるクエリを終了してください。
まず、アプリケーションが問題のあるクエリの送信を停止していることを確認してください。そうしないと、クエリを終了しても再発します。
-
DMS コンソールで、データベースにログインします。
-
[パフォーマンス] > [インスタンスセッション] の順に選択します。
-
終了するセッションを選択し、[選択したものを強制終了] をクリックします。
コマンドを使用した問題のあるクエリの終了
-
MySQL コマンドラインツールを使用してインスタンスに接続します。
-
次のコマンドを実行してセッションの詳細を表示し、問題のあるセッションを特定します。
-
show processlist;コマンドを実行します。
-
多数のセッションが実行されている場合は、
show full processlist;コマンドを実行して、完全なクエリテキストを表示します。
-
-
kill [$ID]コマンドを実行してセッションを終了します。[$ID] は、コマンド出力のId列のセッション ID に置き換えてください。
対象製品
-
ApsaraDB RDS for MySQL