すべてのプロダクト
Search
ドキュメントセンター

:Linux インスタンスにおける高いディスク I/O 負荷の解決

最終更新日:Nov 29, 2025

問題の説明

  • Elastic Compute Service (ECS) インスタンスでホストされているウェブサイトやアプリケーションの応答が遅い、タイムアウトする、または I/O 関連のエラーログが表示される。

  • インスタンスの IOPS、スループット、またはデバイス使用率 (%util) のメトリックが過度に高い。

原因

  • 高い I/O 消費プロセス:インスタンス上のプロセス (データベースの読み書き、大量のログ書き込み、バックアップジョブなど) が多くのディスク読み書きリクエストを生成し、ディスクの I/O 帯域幅全体を消費している。

  • ディスクのパフォーマンスボトルネック:現在のビジネスにおける通常の I/O 要求が、インスタンスにアタッチされているディスクのパフォーマンス上限 (IOPS またはスループット) を超えている。

解決策

iostat を使用してディスクのボトルネックを確認し、次に iotop を使用して特定のプロセスを特定します。最後に、必要に応じてリソースを最適化またはスペックアップします。

ステップ 1:ディスク I/O ボトルネックの確認

  1. ECS インスタンスにログインします。

    1. [ECS コンソール - インスタンス]に移動します。上部のナビゲーションバーで、対象のリージョンとリソースグループを選択します。

    2. 対象インスタンスの詳細ページで、[接続] をクリックして [ワークベンチ] を選択します。画面の指示に従ってターミナルにログインします。

  2. iostat を使用してディスクの I/O ステータスをモニターします。

    1. sysstat パッケージをインストールします。

      Alibaba Cloud Linux / CentOS / Fedora

      sudo yum install -y sysstat

      Ubuntu / Debian

      sudo apt install -y sysstat

      openSUSE

      sudo zypper install -y sysstat
    2. iostat を実行して、2 秒ごとにデータをリフレッシュします。

      iostat -d -x -k 2
  3. iostat の出力を分析します。次のメトリックに注意してください:

    • r/sw/s:1 秒あたりの読み取りおよび書き込みリクエスト数 (IOPS)。

    • rkB/swkB/s:1 秒あたりの読み取りおよび書き込みデータ量 (スループット)。

    • %util:ディスクの I/O 使用率。この値が常に 100% に近い場合、ディスクデバイスは飽和状態です。

ステップ 2:高い I/O を消費しているプロセスの特定

ディスク I/O が飽和状態であることを確認したら、高い負荷を引き起こしているプロセスを特定する必要があります。

  1. iotop を使用して、プロセスの I/O アクティビティをリアルタイムで表示します。

    1. iotop をインストールします。

      Alibaba Cloud Linux / CentOS / Fedora

      sudo yum install -y iotop

      Ubuntu / Debian

      sudo apt install -y iotop

      openSUSE

      sudo zypper install -y iotop
    2. アクティブな I/O プロセスを表示します。

      sudo iotop -o
  2. iotop の出力を分析します。

    • プロセスの特定:DISK WRITE または DISK READ 列で最も I/O が高いプロセスを見つけます。

    • 追加のコンテキスト:IO> 列は、プロセスが I/O を待機している時間の割合を示します。

ステップ 3:異常なプロセスの分析と対処

  1. 原因の分析:考えられる原因には、低速な SQL クエリ、高いログレベル、頻繁なファイルの読み書き操作などがあります。

  2. 解決策 (これらに限定されません):

    • データベース:スロークエリログを確認します。SQL 文とインデックスを最適化します。

    • ログサービス:アプリケーションのログレベルを下げ (例:DEBUG から INFO へ)、ログローテーションを設定します。

    • ファイル I/O 戦略:ファイルの読み書きロジックを確認します。メモリキャッシュを使用し、バッファーサイズを増やします。

ステップ 4:ディスクパフォーマンスの評価とスペックアップ (任意)

アプリケーション層の最適化で負荷を軽減できない場合は、ディスクをスペックアップしてパフォーマンスを向上させることができます。

  1. 要件の評価:iostat によって報告された実際の IOPS とスループットに基づいて、パフォーマンス目標を決定します。

  2. スペックアップの実行:パフォーマンス目標に基づき、ディスクをより高い仕様にスペックアップします。

推奨事項

  • モニタリングとアラートの設定%util、IOPS、スループットなどの主要なディスクメトリックに対して、適切なアラートのしきい値 (例:80%) を設定し、問題を早期に検出します。

  • アプリケーションの I/O 最適化:アプリケーション層で、可能な限りキャッシュを実装して、直接的なディスクの読み書きを減らします。書き込みが多いシナリオでは、非同期書き込みやバッチ書き込みを使用して I/O ピークを平滑化することを検討してください。