JBOSS CPU使用率が高い。

JBOSS CPU使用率が高い。

私のアプリケーションはJBOSS EAP 6.1にインストールされています。数日前、私たちはアプリケーションが遅いか、エンドユーザーがアクセスできないことを発見しました。

我々は記録し、ps -aux出力の1つは次のとおりです。

[Mon Jun 12 08:55:29.218 2017] 500      46257 90.7 10.2 22713508 6779044 ?    Sl   Apr26 61791:48 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.45.x86_64/jre/bin/java -D[Standalone] -server -XX:+UseCompressedOops -Xms2048m -Xmx4096m -XX:MaxPermSize=512m -Djava

このJavaプロセスが私のCPUを占めているようです。そしてそれはSlモードにあります。これが私の家です。

これがアプリケーションの問題の原因かもしれませんか?

CPU使用率が高いのはなぜですか?

JBOSSアプリケーションサーバーでこのプロセスの役割は何ですか?

スレッドダンプとGcログを取得できず(後でgcログが有効になっていないことを確認しました)、サーバーを再起動しました。今はログがありません。

ベストアンサー1

表示される出力には、サーバーとして実行されるjavavm以外のアプリケーションは表示されません。

使用されるメモリが制限に近づくと、Javaアプリケーションで高いCPU負荷が頻繁に発生します。ガベージコレクションは、メモリを再利用するために実行され続けます。これによりアプリケーションのパフォーマンスが低下し、ほぼすべてのCPUサイクルが消費されます。

プロセスを終了したため、プロセスを把握する機会がなくなりました。

将来の私の提案は、JVMを監視する方法を設定することです。

この状況が再び発生した場合は、次のことができます。

Java インスタンスの Java スタックトレースを取得します。 (
PID 46257で実行されるJava)
jstack -l 46257 >jstack-output.log

次に、さらなる分析のためにヒープダンプを実行します。
jmap -dump:live,format=b,file=jmap-heapdump.hprof 46257

hprof-heapdump分析は、さまざまなツール(google:java heapdump detector)を介して実行できます。これは、高いCPU負荷の原因をよりよく見つけるのに役立ちます。

おすすめ記事