Java 在 KVM 上意外停止世界

Java unexpected Stop The Worlds on a KVM

是否有人也遇到过 KVM 上 JVM(Java 7 和 8 热点)运行 中意外的 Stop The Worlds 暂停?我认为,由于虚拟化,硬件上的其他 KVM 可能会占用我的 JVM 的处理时间。可能吗?你能解决这个问题吗?如何解决?

我的垃圾收集器图表看起来很正常。 minor gc 每 15 分钟发生一次,所以我认为这不是经常出现 STW 的原因。

我建议你 运行 一个 JVM,它不通过监视器抖动做任何事情。例如 MicroJitterSampler

这将有助于确定系统抖动的基线。 例如在干净的机器上,您可能希望得到

2us 78400
3us 122703
4us 345238
6us 216098
8us 78694
10us    3977528
14us    114495
20us    4931
30us    203
40us    35
60us    18
80us    11
100us   9
140us   132
200us   85
300us   473
400us   5
1ms 24

这是针对每小时的抖动进行标准化的。

有了亲和力,你可以得到更低的价格。在虚拟机上,您可能希望在安静的机器上看到 5 - 50 毫秒。