堆使用率(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%。正常吗我应该怎么做才能避免这种问题,其原因是什么?
答案 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这样的事件探查器。 还可以查看其他系统活动,例如交换。