日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java应用线上一次故障诊断分析

發布時間:2025/7/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java应用线上一次故障诊断分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天項目發布,在預發布機器上居然出現應用啟動不到10分鐘 CPU使用率從不到1%飆升到95以上,load從不到1升到15以上,然后當然應用就不可用了,第一次還奇怪為什么10分鐘后就變成這樣,然后找不到原因,異常還一堆其他的異常,而且還有其他的需求一起發布,所以還懷疑其他需求的問題,然后就單獨發布自己的需求代碼,重新發布后大概10分鐘后又出現這個問題,想了想,一堆的超時,應用訪問也是超時,開始懷疑線程的問題,通過jstack dump java進程的線程棧信息,通過分析日志發現了 34個線程有16個線程的狀態處于同樣一處代碼上的runnable狀態,

?

"qtp1041301507-215" prio=10 tid=0x000000005aa2a800 nid=0x741d runnable [0x0000000044598000]java.lang.Thread.State: RUNNABLEat java.lang.Long.valueOf(Long.java:557)at com.alibaba.china.biz.viewcache.tree.NestTree.getNode(NestTree.java:188)at com.alibaba.china.biz.viewcache.ViewCacheTool.retrieveDisplayCategory(ViewCacheTool.java:802)at com.alibaba.apps.saleoffer.module.control.spuIndustry.SpuIndustryOfferResultMro.getIndustryMroAttributes(SpuIndustryOffer ResultMro.java:113)

才訪問了幾次這個代碼對應的url,就出現該請求對應的處理線程一直在runnable狀態,而且應用的url顯示超時了。

?

好吧,再查下代碼

while (true) {DisplayCategory offerCategory = viewCacheTool.retrieveDisplayCategory(curCategoryId);if (offerCategory != null && offerCategory.getAttributes() != null && offerCategory.getAttributes().size() > 0) {for (int i = 0; i < offerCategory.getAttributes().size(); i++) {...} curCategoryId = offerCategory.getSuperCategoryId1();} ......}

這段代碼再執行過程中由于?viewCacheTool.retrieveDisplayCategory的生產環境和測試環境的數據源不同導致在測試環境沒有出現問題,而線上處理過程由于curCategoryId = offerCategory.getSuperCategoryId1();在遞歸過程中

由于沒有進入if程序塊,導致死循環。

?

第一次遇到cpu和load飆升這么高,很有可能還真是死循環引起的,跟線程一直在執行有關。


轉載于:https://www.cnblogs.com/secbook/archive/2012/07/02/2655159.html

總結

以上是生活随笔為你收集整理的java应用线上一次故障诊断分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。