锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

jvm cpu过高排查

时间:2023-04-07 12:37:00 ross高继电器e12

双十一,第一天晚上10点左右收到阿里云cpu超过90%的短信报警。

第二天上班,开始处理,步骤如下:

1、top找出cpu高的java进程号9592

2、top -Hp 9592查看cpu占用time最高线程编号28178

3、执行 printf "%x\n" 28178 获取线程16进制地址6e12 (十六进制必须小写)

4、执行 jstack 9592(pid)|grep -10 6e12(线程16进制号)


"http-bio-8121-exec-199" daemon prio=10 tid=0x00007f751804b800 nid=0x6e12runnab le [0x00007f74ebcf9000]
java.lang.Thread.State: RUNNABLE
at com.ejavashop.model.seller.SellerTransportModel.getFee(SellerTransportModel.java:387)
at com.ejavashop.model.seller.SellerTransportModel.calculateTransFeeFuil (SellerTransportModel.java:312)
at com.ejavashop.model.cart.CartModel.getCartInfoByChooseId(CartModel.ja va:1134)
at com.ejavashop.service.impl.cart.CartServiceImpl.getCartInfoByChooseAn dId(CartServiceImpl.java:201)


5、排查代码SellerTransportModel.java:387

for (int i = 0; i < surplus; i = addWeight) {
price = price.add(new BigDecimal(addFee));///这个线程一直在执行这个行代码。。。也就是说,死循环导致的原因。cpu一直高
}


6、修改代码

//计算额外的钱
if(addWeight!={///在线死循环
for (int i = 0; i < surplus; i = addWeight) {
price = price.add(new BigDecimal(addFee));
}
}
7.包装测试,紧急上线,over

数据地址:记一次 JVM CPU 利用率飙升的排查过程_CG国斌的博客-CSDN博客_cpu飙高 jvm

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章