症状
応答が遅い: Secure Shell Protocol (SSH) コマンドが遅延します。Web サイトまたは API へのアクセスが遅いか、タイムアウトします。
メトリックが高い: CPU、メモリ、ディスク I/O のメトリックが常に 80% を超えます。
サービスの中断: メモリ不足 (OOM) エラーにより、システムが重要なプロセスを終了し、インスタンスが自動的に再起動します。
ログインの失敗: SSH 接続が拒否されます。
原因
アプリケーションの問題: アプリケーションコードにパフォーマンスボトルネックまたはメモリリークがあります。
トラフィックの急増: 同時アクセスがインスタンスの処理能力を超えています。
I/O ボトルネック: ディスクの読み取りおよび書き込み操作が飽和状態になり、CPU の
iowaitが高くなります。
ソリューション
ステップ 1: htop を使用して異常なプロセスを迅速に特定する
VNC 接続を使用して ECS インスタンスにログインします。
ECS コンソール - インスタンスに移動します。上部のナビゲーションバーで、ターゲットリージョンとリソースグループを選択します。
ターゲットインスタンスの詳細ページに移動します。[接続] をクリックし、[VNC] を選択します。ユーザー名とパスワードを入力して ECS インスタンスにログインします。
htop をインストールして実行します。
sudo yum install -y htop htophtop インターフェイスで出力を分析します。
CPU 消費量が多いプロセスを見つけるには、
F6キーを押し、PERCENT_CPUで降順にソートします。メモリ消費量が多いプロセスを見つけるには、
F6キーを押し、PERCENT_MEMで降順にソートします。
ステップ 2: sar を使用してリソースのボトルネックを診断する
htop を使用して症状を特定した後、sar を使用して定量的なデータを取得し、ボトルネックが CPU、メモリ、または I/O であるかどうかを確認します。
sysstat をインストールして有効にします。
sudo yum install -y sysstat systemctl start sysstat && systemctl enable sysstatターゲットを絞った分析を実行します。
CPU 使用率 (
sar -u) を分析して、CPU 時間がどこで費やされているかを確認します。# 1 秒に 1 回、合計 5 回データを収集します sar -u 1 5%userが高い: アプリケーションの問題を示します。%systemが高い: カーネルまたは I/O の呼び出しが頻繁であることを示します。%iowaitが常に 20% を超える: ディスク I/O のボトルネックを示します。
システム負荷 (
sar -q) を分析して、システムのビジー状態を測定します。# 2 秒に 1 回、合計 5 回データを収集します sar -q 2 5ldavg-1が CPU コア数より大きい: システムが過負荷状態です。runq-szが高い: 多くのプロセスが CPU を待機しているキューにあります。
メモリとスワップのアクティビティ (
sar -rとsar -W) を分析して、メモリが枯渇しているかどうかを判断します。# メモリ使用量を分析します sar -r 1 3 # スワップアクティビティ (スワップ) を分析します sar -W 1 3pswpin/sまたはpswpout/sが常に 0 より大きい: 物理メモリが不足しており、システムがディスクにスワップしています。これにより、パフォーマンスが低下します。
ディスク I/O (
sar -d) を分析して、ディスクパフォーマンスのボトルネックを特定します。# 特定のディスクを分析するために、1 秒に 1 回、合計 3 回データを収集します sar -d 1 3%utilが 100% に近い: ディスク I/O が飽和状態です。awaitが 20 ms より大きい: I/O リクエストの処理時間が長すぎます。
ステップ 3: ターゲットを絞ったソリューションと最適化を適用する
CPU 消費量が多いアプリケーションプロセスの場合:
コードの最適化:
perf(C/C++) やjstack(Java) などのツールを使用して、ホットスポットコードを特定し、最適化します。ロジックの最適化: 無限ループや全表スキャンを実行する SQL クエリなどの非効率な操作を確認して修正します。
メモリ不足または頻繁なスワッピングの場合:
リークの調査:
valgrind(C/C++) やjmap(Java) などのツールを使用して、メモリリークを分析します。構成の調整: Java 仮想マシン (JVM) の
-Xmsや-Xmxパラメーターなど、アプリケーションのメモリパラメーターを構成します。リソースのアップグレード: インスタンスタイプを変更して物理メモリを増やします。詳細については、「インスタンスタイプの変更の概要」をご参照ください。
ディスク I/O が高い: 詳細については、「Linux システムでのディスク I/O 負荷が高い場合のトラブルシューティング」をご参照ください。
次のステップ
監視とアラートの設定: CPU、メモリ、負荷、ディスクなどの主要なメトリックにアラートのしきい値を設定して、早期警告を受け取ります。
Auto Scaling の計画: Web アプリケーションなど、変動のあるワークロードの場合、トラフィックの変更に応じてインスタンスを自動的に追加または削除するように Auto Scaling ポリシーを構成します。