問題の説明
ApsaraDB RDS for MySQLインスタンスのIOPS使用率が高い。
原因
RDSインスタンスのメモリ容量がデータキャッシングまたはソートの要件を満たすことができないため、大量の物理I/Oが生成されます。
多数のデータ行がスキャンされるため、クエリの効率は低くなります。
解決策
IOPSの使用量を減らすには、次の方法の1つまたは2つを使用できます。
RDSインスタンスの診断レポートを生成します。 この方法を使用することを推奨します。
異常なクエリを終了します。
RDSインスタンスの診断レポートの表示
データ管理 (DMS) コンソールでRDSインスタンスにログインします。
RDSインスタンスを右クリックし、[パフォーマンス] > [ワンクリック診断] を選択します。
Database Autonomy Service (DAS) コンソールで、RDSインスタンスのリアルタイムセッション、デッドロック、および低速クエリを表示します。
最適化を行うには、必要なモジュールの詳細リンクをクリックします。
異常なクエリの終了
DMSコンソールで異常なクエリをクエリおよび終了できます。 Physical_sync_readとPhysical_async_readが大きな値に設定されているクエリを終了することを推奨します。 Physical_sync_readおよびPhysical_async_readの大きい値は、高い物理リードを示す。
RDSインスタンスへの接続数が上限に達した場合、DMSまたはMySQLコマンドラインツールを使用してRDSインスタンスに接続することはできません。
DMSまたはMySQLコマンドラインツールを使用してRDSインスタンスに接続できない場合、ApsaraDB RDSコンソールでwait_timeoutパラメーターを秒単位 (60など) の小さな値に設定することを推奨します。 このパラメーターを60に設定すると、RDSインスタンスは60秒以上アイドル状態の接続を自動的に閉じます。 これにより、DMSまたはMySQLコマンドラインツールを使用して、RDSインスタンスへの新しい接続を確立できます。
RDSインスタンスのセッションを終了して異常なクエリを終了する
診断レポートが利用できない場合、またはSQL最適化の提案をすぐに適用できない場合は、DMSコンソールでRDSインスタンスのセッションを終了することで、異常なクエリを終了できます。
異常なクエリの開始を停止する必要があります。 そうでない場合、異常なクエリは引き続き持続します。
データ管理 (DMS) コンソールでRDSインスタンスにログインします。
RDSインスタンスを右クリックし、[パフォーマンス] > [インスタンスセッション] を選択します。
終了するセッションを選択し、[選択終了] をクリックします。
コマンドの実行による異常なクエリの終了
MySQLコマンドラインツールを使用してRDSインスタンスに接続します。
異常なセッションを特定します。
SHOW PROCESSLIST;
ステートメントを実行します。多数のセッションがアクティブな場合は、
SHOW FULL PROCESSLIST;
ステートメントを実行してセッションを照会します。
kill [$ID]
コマンドを実行して、異常なセッションを終了します。 [$ID] をID列の値に設定します。
適用範囲
ApsaraDB RDS for MySQL