资讯详情

jvm cpu过高排查

双十一,第一天晚上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

标签: ross高继电器e12

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

锐单商城 - 一站式电子元器件采购平台