メトリックボックスのCPU使用率は、100%断続的に発生しています。
Grafanaダッシュボードのレンダリング時に「内部サーバーエラー」
私たちのマシンで実行されている唯一のアプリケーションは、3つのサブコンテナーを持つDockerです。
黒鉛
グラファナ
マシンスペック
OSバージョンUbuntu16.04 LTS
リリース16.04(ゼニアル)
カーネルバージョン4.4.0-103-generic
Dockerバージョン17.09.0-ce
CPU 4コア
メモリ4096MB
メモリの予約は無制限です
ネットワークアダプタ管理
ストレージ
ドライバーオーバーレイ2
バッキングファイルシステムextfs
d_typetrueをサポート
ネイティブオーバーレイ差分true
メモリスワップ制限は2.00GBです
以下は、cAdvisorからの抜粋です。
Kworkerおよびksoftirqdプロセスは、ステータスを「D」から「R」、「S」に一貫して変更します。
マシンの仕様はこのセットアップに対して正しいですか?
CPU使用率を「通常」レベルにするにはどうすればよいですか?
[〜#〜]編集[〜#〜]
メモリを4GBから8GBに増やした後、数日間は期待どおりに機能しましたが、時間の経過とともにCPU使用率が増加しました。
CPUの39%を使用する4 ksoftirqdsがあります。これはかなり高く、I/O負荷の高さ、電源管理の問題、カーネル/デバイスドライバーのバグなどの多くの問題を示している可能性があります。
最新のカーネルに更新して、適切なバリアントが選択されていることを確認し(たとえば、AWSとAzure用に特別に調整されたUbuntuカーネルがある)、Linux I/Oパフォーマンストラブルシューティングツールのいくつかを調べてください。
Linuxのパフォーマンスのトラブルシューティングに関する優れたリソースは、一般的に Brendan Greggのブログ
カーネルが大量のCPU kworker
スレッドを使用しているようです。これは、バグのあるカーネルドライバーが原因であることがよくあります。
デバッグするには、echo l > /proc/sysrq-trigger
でバックトレースをトリガーします。これにより、出力がdmesg
に生成されます。数回実行して、一貫性があるかどうかを確認します。 このスレッド に基づいて、どのドライバーが高負荷を引き起こしているのかが明らかな場合があります。 1つの考えは、これをESXiで実行している場合、e1000ネットワークインターフェイスドライバーにバグがあることで有名です。