JavaプロセスがSIGSEGVでしばらくすると中止されました。サーバーをより多くのRAMでアップグレードした後、発生し始めました。さまざまなJVMでテストしたところ、ハードウェアの問題である可能性があります。しかし、memtest86では問題は検出されませんでした。
それで、問題の原因を検出するために他に何ができますか?障害のあるモジュールを検出するために、RAMモジュールを1つずつ取得する必要がありますか?
サーバーは64ビットのOpenSuse11.3で実行されています。
メモリはECCではないようです。私はこれのキットを持っています(3 * 4GB * 2 = 24GB):
BIOS設定を確認した後、12に設定された代替の「システムメモリマルチプライヤ」がありました。この設定を「自動」に変更しましたが、クラッシュは発生しなくなりました。だから、同じような問題を抱えている他の人にも役立つかもしれないと思いました。
Memtest86 + を新しいシステムに対して48〜72時間実行しましたが、何年にもわたって、2日目または3日目まで表示されなかったエラーをたくさん見つけました。数回/数回のパスだけでは十分ではありません。
また、ECCと非ECCを混在させないでください。そうです、原因を見つけるには、おそらくRAMモジュールを削除/ジャグリング/再テストする必要があります。
セグメンテーション違反は通常、バッファオーバーラン、解放後の使用、nullポインタの逆参照などのプログラミングバグが原因であることに注意してください。
Memtests86 + についてのもう1つの提案。 Memtestはすべてのメモリを確実にチェックしますが、ハードウェア障害は、マシンの温度条件が特定のレベルに達したときにのみ表示される場合があります。そして、memtestはディスクやシステムの他の部分にストレスを与えません。
温度が問題になる可能性があると思われる場合は、通常よりも悪い温度条件でmemtestを実行してみてください。
システムの実行中にRAMのエラーをチェックするのに役立つアプリケーションが1つあります。つまり、システムを再起動して作業を停止する必要はありません。RAMチェックすると、作業を並行して実行できます。
memtester
Ubuntuをインストールする場合は、インストールできます
Sudo apt-get install memtester