<em>Java</em>斗帝之路 发布时间: 05-1518:19 今天来分享一波实战,线上问题处理。话不多说,直接开干。 下面是线上机器的cpu使用率,可以看到从4月8日开始,随着时间cpu使用率在逐步增高,最终使用率达到100%导致线上服
2021-05-16 09:30:01
今天來分享一波實戰,線上問題處理。話不多說,直接開幹。
下面是線上機器的cpu使用率,可以看到從4月8日開始,隨著時間cpu使用率在逐步增高,最終使用率達到100%導致線上服務不可用,後面重啟了機器後恢復。
1、排查思路
簡單分析下可能出問題的地方,分為5個方向:
系統本身程式碼問題內部下游系統的問題導致的雪崩效應上游系統呼叫量突增http請求第三方的問題機器本身的問題
2、開始排查
檢視日誌,沒有發現集中的錯誤日誌,初步排除程式碼邏輯處理錯誤。首先聯絡了內部下游系統觀察了他們的監控,發現一起正常。可以排除下游系統故障對我們的影響。檢視provider介面的呼叫量,對比7天沒有突增,排除業務方呼叫量的問題。檢視tcp監控,TCP狀態正常,可以排除是http請求第三方超時帶來的問題。檢視機器監控,6臺機器cpu都在上升,每個機器情況一樣。排除機器故障問題。即通過上述方法沒有直接定位到問題。
3、解決方案
1、重啟了6臺中問題比較嚴重的5臺機器,先恢復業務。保留一臺現場,用來分析問題。
2、檢視當前的tomcat執行緒pid。
3、檢視該pid下執行緒對應的系統佔用情況。top -Hp 384
4、發現pid 4430443144324433 執行緒分別佔用了約40%的cpu
5、將這幾個pid轉為16進位制,分別為114e114f11501151
6、下載當前的java執行緒棧 sudo -u tomcat jstack -l 384>/1.txt
7、查詢5中對應的執行緒情況,發現都是gc執行緒導致的
8、dump java堆資料
sudo -u tomcat jmap -dump:live,format=b,file=/dump201612271310.dat 384
9、使用MAT載入堆檔案,可以看到javax.crypto.JceSecurity物件佔用了95%的記憶體空間,初步定位到問題。
面試專欄:第1-20期文章彙總
MAT下載地址:
http://www.eclipse.org/mat/
10、檢視類的引用樹,看到BouncyCastleProvider物件持有過多。即我們程式碼中對該物件的處理方式是錯誤的,定位到問題。
關於MAT推薦:給,你們想要的記憶體溢位MAT排查工具
4、程式碼分析
我們程式碼中有一塊是這樣寫的
這是加解密的功能,每次運行加解密都會new一個BouncyCastleProvider物件,放倒Cipher.getInstance()方法中。
看下Cipher.getInstance()的實現,這是jdk的底層程式碼實現,追蹤到JceSecurity類中
verifyingProviders每次put後都會remove,VerificationResults只會put,不會remove.
看到verificationResults是一個static的map,即屬於JceSecurity類的。所以每次運行到加解密都會向這個map put一個物件,而這個map屬於類的維度,所以不會被GC回收。這就導致了大量的new的物件不被回收。
5、程式碼改進
將有問題的物件置為static,每個類持有一個,不會多次新建。
6、本文總結
遇到線上問題不要慌,首先確認排查問題的思路:
檢視日誌檢視CPU情況檢視TCP情況檢視java執行緒,jstack檢視java堆,jmap通過MAT分析堆檔案,尋找無法被回收的物件
好了,今天的分享就這麼多,期待你的點贊、轉發,先謝謝啦!
相關文章
<em>Java</em>斗帝之路 发布时间: 05-1518:19 今天来分享一波实战,线上问题处理。话不多说,直接开干。 下面是线上机器的cpu使用率,可以看到从4月8日开始,随着时间cpu使用率在逐步增高,最终使用率达到100%导致线上服
2021-05-16 09:30:01
根据官方的信息显示,硬件上,火星探索版的OPPO Find X3 Pro与16+512GB的OPPO Find X3 Pro顶配版完全一样:采用了相同的<em>高通</em>骁龙888处理器,搭配16+512GB存储组合,支持安卓10bit全链路色彩管理系统、支持65W超
2021-05-16 09:01:18
据国外网站的消息称,苹果公司旗下主打服务 Apple Music似乎极有可能会在<em>Android</em> 系统上着陆,尤其是当部分受邀开发者拿到了最新的Apple Music for <em>Android</em> Beta APP 时,他们发现了之前并不存在的高保
2021-05-16 09:01:06
综合目前消息,Pixel6至少拥有两个版本,标准版仅提供橙色、黑色、白色拼色版本,Pixel6Pro提供更多选择。相比起国内手机厂商对于安卓系统的“龟速”适配,Pixel系列手机自然有“亲儿子”的待遇,每年都能最早一批升级安卓系统
2021-05-16 09:00:56
早前多方消息显示荣耀50系列或于6月中上旬发布,其应该也算是荣耀独立以来真正意义上第一款自己的旗舰机,或搭载<em>高通</em>骁龙888芯片。荣耀50系列的设计与配置,上图左侧是日前曝光据说名为「霁风蓝」配色;而玻璃后盖
2021-05-16 08:30:34
本届<em>高通</em>技术与合作峰会为期两天,主要将由5G技术与合作峰会、骁龙之夜以及技术开放日三场主题活动构成。据了解,整个峰会期间会有近300项产品和技术演示,划分五大主题体验区以供科技爱好者体验参观,全场景呈
2021-05-16 08:30:28