对于JBoss EAP服务器来说这正常吗?

时间:2019-04-29 18:00:04

标签: multithreading jboss jboss-eap-6

堆使用率(mb)

实际指标
最高: 8126
用过的: 2526
(31%) 承诺: 8126
在里面: 8192
非堆使用情况(mb) 公制实际
最高: 2144
用过的: 200 (9%) 承诺: 326 在里面: 23
线程使用 需要帮忙? 公制实际
生活: 585 守护进程: 557(95%)

我已经使用以下配置设置了服务器:

let file_id = self.convert_to_byte_array(file_id);

我的问题是服务器有时会挂起,我需要手动重新启动它。服务器启动时,线程使用率始终高于90%。正常吗我应该怎么做才能避免这种问题,其原因是什么?

2 个答案:

答案 0 :(得分:0)

尝试禁用显式GC收集并运行自己的GC。这样,将清除不需要的垃圾和未使用的垃圾。 像这样:(带有Web应用程序的Jboss + 8Gb RAM服务器的示例配置)

JAVA_OPTS="-server -Xms7800m -Xmx7800m -XX:NewSize=5632m -XX:MaxNewSize=5632m -XX:+UseParNewGC -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+CMSParallelRemarkEnabled -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=50 -XX:+UseCMSInitiatingOccupancyOnly -XX:ConcGCThreads=4 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/mydirectory/project/projectgclog-$(date +%Y_%m_%d-%H_%M).log -XX:+DisableExplicitGC -Djava.net.preferIPv4Stack=true"

通过这种方式,我的服务器会定期清除不需要的垃圾,并使服务器正常运行。 希望这会有所帮助。

答案 1 :(得分:0)

-XX:MaxPermSize=2g

这非常高

-Xms8g -Xmx8g -XX:+UseParallelGC"

这将接受8秒钟的完整GC暂停。

Thread Usage always above 90% when the server started

这是什么意思?

然后,您需要弄清楚“挂在自己身上”会发生什么。发生这种情况时,请检查Java进程的CPU使用率。 当几乎没有使用时,可能会导致死锁,或者应用程序可能会等待其他事件。线程转储将在这里为您提供帮助。 较高时,可能与Java或GC相关。看一下gc日志并运行像async-profiler这样的事件探查器。 还可以查看其他系统活动,例如交换。