プロセスが400 Mb / sより速い速度でディスクからデータを読み取る理由を確認する方法

プロセスが400 Mb / sより速い速度でディスクからデータを読み取る理由を確認する方法

私はAzureでいくつかの仮想マシンを管理していますが、週に数回ランダムに見えます。I/O読み取り速度が400Mb/sを超えています。。これは同時に発生するのではなく、一度に1つのシステムで発生します。

このマシンはSSDをハードドライブとして使用しますが、読み取り速度は普通に見えません。

ここに画像の説明を入力してください。

また、この活動が発生する機械数分後にSSHを介してアクセスできなくなります。

私は現在使用していますオートフこの内容をログファイルに出力しようとしています。したがって、ハングしたコンピュータを再起動した後、それを確認して問題を引き起こしているプロセスを特定できます。

私もcrontabを使って毎分実行します。

私が使用している現在のスクリプトを以下で見つけてください。

#!/usr/bin/env bash
OUT=/var/log/zs/io.log
echo $(date) >> $OUT
echo $(iotop -o -b -n 1|head -n 2) >> $OUT
echo $(iotop -o -b -n 1|head -n 6|tail -n +4) >> $OUT

I/O 急増を示すログファイル:

Fri Jan 12 09:33:01 CET 2024
Total DISK READ : 113.45 M/s | Total DISK WRITE : 7.04 M/s Actual DISK READ: 171.85 M/s | Actual DISK WRITE: 85.79 M/s
3350 be/4 root 41.59 M/s 0.00 B/s ?unavailable? containerd 11744 be/4 root 112.49 M/s 0.00 B/s ?unavailable? dockerd -H fd:// --containerd=/run/containerd/containerd.sock 11925 be/4 root 1142.56 K/s 0.00 B/s ?unavailable? dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Fri Jan 12 09:58:35 CET 2024

明らかにdockerプロセスに関連しているようですが、知りたいのですが。

  1. 機械にアクセスできなくなるのを防ぐことはできますか?
  2. この問題を引き起こす正確なDockerコンテナをどのように追跡できますか?

よろしくお願いします。

答え1

Dockerはcgroup(V2)を使用してio操作の制限を設定できる必要があります。

ただし、ディスクの書き込み速度が高いと、次のような結果が発生します。いいえSSHを介してコンピュータが応答しないようにします。

私の推測では、個々のドッカーコンテナではなくOSです。おそらくスワップが有効になっており、コンテナの1つがRAM使用量を探索しています。

それにもかかわらず、好みのプロセス監視ツールを使用すると、それを簡単に把握できます。topですが、htopIo読み書き速度列も表示するので好みます。

コンテナが必要とするRAMの量を制限するには、同じメカニズムであるdockerのcgroups統合を使用する必要があります。スワップを無効にしないでください。これは、短期的なメモリ超過要求に対する柔軟性を失うため、状況をさらに悪化させるだけです。

関連情報