2016-11-21 1 views
1

私は、数日後にサービスの1つが死んでいるのを見た後、logstash、newrelicコレクタなどのJavaサービスをほとんど実行していないノードをクラウドに持っています。殺したUID 10112、(Java)の合計-VM、プロセス7912:3912228kB、アノン-RSS VAR/log/messagesにはLinuxでJavaサービスが終了しました。動作を理解するのに助けが必要

を、次の11月21日午前九時34分26秒XXX-YYYY-サービス-18aのカーネルは言います: 867496kB、file-rss:268kB

死んだ後、私はmemの総使用量を調べました。私はこれが助けになるとは思っていませんが、現在どのくらいのメモリを使用しているのかを伝えたいだけです。 2.9gの845Mスワップ:0B 0B 0B

-/+バッファ/キャッシュ3.7gの3.3G 410M 144K 42M 392M :

メモリーコンフィグ無料-mh 総使用無料の共有バッファは、Memのがキャッシュされました

Javaサービスは、Xmxの値

newRelic -Xms256m -Xmx1024m(2つのインスタンス) logstash以下使用するように構成されています-Xmx500m 他のJavaサービス: - すべての5つのサービスが-Xms256m -Xmx1024m

で構成されているので、この構成に基づいて、トータルサービスは限りが消費されていないとして罰金である、システムが持っているより多くのメモリを使用するように設定されていますそれ。しかし、何が起こったのか、起こったことをどうやってデバッグするのかを理解する必要があります。すべてのサービスはヒープをダンプするように設定されていますが、コアファイルはどこにも表示されません(ただし、システムにはヒープをダンプすることもできません)メッセージは?

私はプロセスが殺されることについて説明するこの記事に出くわしました。 https://unix.stackexchange.com/questions/128642/debug-out-of-memory-with-var-log-messages

誰かが経験に基づいて説明したことがありますか?

+0

おそらくカーネルがプロセスをただちに終了させるカーネルOOMではなく、* Java * OOMに遭遇したときにヒープをダンプするように設定されています。しかし、実際には、これはプログラミング上の問題ではないので、スーパーユーザ/サーバの障害で試してみるべきです。 – RealSkeptic

+0

あなたは「Linuxで殺された」と言っていますが、他のどのOSでも正常に動作していますか? "nohup"と何か関係があるかどうか疑問に思うだけです。 – BretC

+0

私はLinux上でしか行っていないので、私は他のOSについて知りません。 – Milind

答えて

0

これは、OOMキラーがメモリを使い果たしているためにプロセスを強制終了することです。

あなたのメモリ使用量を観察して、何が摂取しすぎているかを調べ、サービスに与えている金額を調整します。または、サーバーにメモリを追加します。

+1

"より多くのメモリ"は、より多くのスワップを意味することもありますが、これは場合によっては十分です。 – the8472

+0

真実ですが、重要なサービスを実行しているサーバーを交換したくないと思われます。 – Kayaman

関連する問題