Java jvm选项-XX:+;SafepointTimeout-XX:SafepointTimeoutDelay外观不';行不通
我在jvm safepoint.log中的服务器上检测到长safepoints(>10秒!):Java jvm选项-XX:+;SafepointTimeout-XX:SafepointTimeoutDelay外观不';行不通,java,garbage-collection,jvm,jvm-arguments,jvm-hotspot,Java,Garbage Collection,Jvm,Jvm Arguments,Jvm Hotspot,我在jvm safepoint.log中的服务器上检测到长safepoints(>10秒!): 6534.953: no vm operation [ 353 0 4 ] [ 0 0 14179 0 0 ] 0 7241.410: RevokeBias [ 357 0
6534.953: no vm operation [ 353 0 4 ] [ 0 0 14179 0 0 ] 0
7241.410: RevokeBias [ 357 0 1 ] [ 0 0 14621 0 0 ] 0
8501.278: BulkRevokeBias [ 356 0 6 ] [ 0 0 13440 0 2 ] 0
9667.681: no vm operation [ 349 0 8 ] [ 0 0 15236 0 0 ] 0
12094.170: G1IncCollectionPause [ 350 0 4 ] [ 0 0 15144 1 24 ] 0
13383.412: no vm operation [ 348 0 4 ] [ 0 0 15783 0 0 ] 0
13444.109: RevokeBias [ 349 0 2 ] [ 0 0 16084 0 0 ] 0
Java HotSpot(TM) 64-Bit Server VM (25.202-b08) for linux-amd64 JRE (1.8.0_202-b08), built on Dec 15 2018 12:40:22 by "java_re" with gcc 7.3.0
...
-XX:+PrintSafepointStatistics
-XX:PrintSafepointStatisticsCount=10
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=/opt/pprb/card-pro/pci-pprb-eip57/logs/safepoint.log
-XX:+SafepointTimeout
-XX:SafepointTimeoutDelay=1000
...
在我的笔记本电脑上,我玩过-XX:SafepointTimeoutDelay=2
它工作良好,打印坏线程:
# SafepointSynchronize::begin: Timeout detected:
...
# SafepointSynchronize::begin: (End of list)
<writer thread='11267'/>
vmop [threads: total initially_running wait_to_block] [time: spin block sync cleanup vmop] page_trap_count
567.766: BulkRevokeBias [ 78 1 2 ] [ 0 6 6 0 0 ] 0
您重新启动了VM,对吗?也许可以尝试添加-XX:+PrintGCApplicationStoppedTime以查看是否获得更多信息?Chris,是的,已重新启动。我们已经有了
-XX:+PrintGCApplicationStoppedTime
。在GC日志中,我看到了相同的问题:2019-03-25T12:42:57.678+0300:6777.056:应用程序线程停止的总时间:18.0049752秒,停止线程花费:18.0036770秒
创建一个本机线程,例如每100毫秒唤醒一次,并检查它是否也经历了长时间的暂停。在任何情况下,始终监视操作系统内存使用情况、I/O使用情况等。