システム無責任 - 極度の負荷

システム無責任 - 極度の負荷

今日、私のサーバーは責任を負うことができず、SSHにログインすることもできませんでした。しかし、私のサーバーアプリケーションを実行したときに「トップレベル」データを復元できました。

サーバーは実行中ですが、新しい接続を許可しませんが、私のアプリケーションはまだ「top」コマンドの出力を私のWebインターフェースに送信しています。 2% CPU 使用量 0.0% wa load 110 ?どのように? トップ

システムログに疑わしい内容が見つかりました。 https://pastebin.com/u8kLCJEM

約10回ほど現れ、私が来たとき(1時間後)syslogにもはやメッセージがありませんでした。上部のスクリーンショットを撮り(110ロード)、サーバーを完全に再起動しましたが、すべてがうまくいきました。しかし、サーバーがクラッシュした理由とそれを防ぐ方法を知りたいです。

答え1

あなたのシステムログにはあまり疑わしい内容はありません。

私が見ることができるもの:

  • 約64GBのRAMを占めるJava Virtual Machine(JVM)があります。
  • 64GBの物理RAMがあります。
  • 交換しなかった

これが問題の理由です。 JVMが漏れています。

何とか終了してから再起動する必要があります。

親コンソールとWebコンソールが機能する理由は、使用可能なメモリが少なく、JVMが異常な場合にすでに実行されているためです。したがって、多くのRAMを割り当てる必要はなく、使用するRAMの量は少なくとも大丈夫です。

他のもの、始めたいもの、幸運ではありません。たとえば、sshdは新しいプロセス(したがって新しいシェル)をフォークできないようです。

JVMは大量のRAMを好みますが、それほど多くはありません。 64GBはすでに制限です。サーバーがホストするWebアプリケーションに問題があります。それが正確に何であるかは、その上で実行されているWebアプリケーションをより深く調査する必要があります。

システムが正常に動作するためには、まずJVMをシャットダウンする必要があります。コマンドラインから簡単なkill -9 13116操作を実行できますが、現在はコマンドラインはありません。

しかし、コマンドラインはtop できるプロセスを終了します(kを押してPIDを選択します)。 Web ベースの上部にも同じ機能が存在できます。

何も機能しない場合は、再起動する必要があります。


長期的:JVMフラグを使用し、メモリ使用量を制限する必要があります。 .iniファイルのどこかにフラグを設定できます。これらのフラグは次のとおりです-Xmx<number> -Xms<number>。これらを確認してください。詳細はアプリケーションサーバーによって異なります。

この種のRAMの乱れはJavaでは一般的ではなく、何かが正しくありません。あなたのアプリケーションを知っていなければ、それが何であるかを正確に知ることができます。

セキュリティの脆弱性はあなたのログに表示されません。

関連情報