怀疑:Java中的JIT去优化导致我们的服务性能突然下降

问题描述 投票:0回答:1

我们的服务运行在JDK17上,这是一个简单的存储查询服务,没有复杂的逻辑。 有时其rpc接口的TP9999可能会出现激增(从几十毫秒到几秒甚至十几秒),并伴随着100%的CPU利用率。

这种情况经常在运行稳定的机器上突然出现,几秒后就会自动恢复。

JFR在异常时刻发现了一些东西:

  1. 总会发生 JIT 去优化和重新编译,这 专注于JSON反序列化方法(我们的主要业务 逻辑是JSON反序列化)。

  2. 有时是C2编译器线程CPU过多 用法,而在其他时候是业务线程消耗 大量CPU。

我猜测JIT去优化可能会导致接口性能下降。 那么我应该如何解决或减少这个性能问题呢?

java performance jit jfr
1个回答
0
投票

我只是通过删除分支预测逻辑解决了这个问题:

//-----------------------------branch_prediction-------------------------------
float Parse::branch_prediction(float& cnt,
                               BoolTest::mask btest,
                               int target_bci,
                               Node* test) {

  return PROB_FAIR;
  //float prob = dynamic_branch_prediction(cnt, btest, test);
  // If prob is unknown, switch to static prediction
  ...
}
© www.soinside.com 2019 - 2024. All rights reserved.