Ubuntu 18.04 lsb、私はAmazon Ec2インスタンス(無料枠)がハングしたときに何が起こっているのかを診断する最良の方法を見つけようとしています。
実験的なサービスが実行されており、メモリリークが発生している可能性があります。
クオリティオブライフのために、私は lnav と呼ばれるユーティリティを使用して、システムログの閲覧を支援しています。また、私は monitorix と呼ばれるユーティリティをインストールして、起こっていることを視覚化しています。
システムログから問題の原因となっている特定のプロセスを特定する方法はありますか?どのログが役に立ちますか? (/ var/log/syslogは役に立ちません)
これらのグラフは、致命的な障害が発生するまでシステムスワップスペースが消費されることに関連する高いCPU負荷を示しています。
しかし、これは具体的なプロセスを教えてくれません。端末からこれを行うにはどうすればよいですか?
構成できる他のプロセス監視はありますか?
Appriciatedヘルプ...
編集:@Rinzwindからのヒントのおかげでsar
がインストールされ、cronが2分ごとに実行しています...しかし、プロセスレベルの情報は提供されません。だから、この他の助けを借りて answer :
pidstat 5 > pidhist.log
パイプを使用してテキストファイルに出力し、永続的なセッションで実行すると、イベントが再度発生したときに診断に役立ちます。
@heynnemaが提案したiotop
ランニング iotop -P -a
これは、トータライザとしてのファイルI/Oのtop
です。これは、実験的なプロセス(モノサービス)がSWAPINで最も多くのスワップを消費するプロセスであることを示していました
****
同じ消費パターンが見られ、プロセスを再開した後、monitorixから通常の約20%に戻ります。
システムは、これらのランダムなイベントの間、何週間も安定しています。 iotop
の証拠は、根本的な問題が実験的なプロセス内にあることを証明しています!
しかし、これはまだランタイム診断です。 既存のログから、事後に障害が発生したプロセスを特定する方法はありますか?先制的なモニタリングとロギングなしでそれを行うために。
問題の証明は解決すべき重要な問題です。ロギングが有効になっていない場合、再発を待たずにそれを行うにはどうすればよいですか?カーネルログ???
助けてくれてありがとう。
この問題を解決するためにRAMを追加しません。
メモリリークの原因となっているプロセスを特定することは、システム構成とは関係ありません。
iotop -P -a
は、イベントの再発時にスワップを消費するプロセスを特定するのに役立ちました。
デジタルフォレンジックログ調査の手順は、より優れたソリューションになります。
コメントから...
free -h
とsysctl vm.swappiness
とcat /etc/fstab
の出力を確認し、iotop
をインストールして、スワップを頻繁に使用する場合の理由を判断しました。
システムがスラッシングである理由はいくつかあります。
十分なRAMがない
十分なスワップがない
vm.swappinessが誤って変更されました
修正...
rAMを追加する
/ swapfileスペースを増やす
vm.swappinessを60-90に設定します(60がデフォルトです)