<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
記一次使用arthas
排查jvm中CPU佔用過高問題。這工具屌爆了 碾壓我目前使用的全部JVM工具。
curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar --repo-mirror aliyun --use-http
jar後面的引數也可以不加 加上只是為了下載速度更快
接下來arthas
控制檯中顯示了當前機器上jvm程序列表 輸入需要排查的jvm程序號即可進入監控命令模式
處理問題之前 先想想如何去找到問題的原因 這個是解決問題個人覺得最重要的一步。
當前的現狀是jvm啟動後 cpu直接飆升到80+%
。而記憶體是正常的,可以認為大概率是某個執行緒佔用了計算資源 導致的。所以第一步需要先把佔用過高執行緒給揪出來。
這次使用arthas
排查。也順便提一下以前記錄過用top -Hp
的方法找出佔用資源的執行緒PID 方法 top -Hp方法參考 。
輸入命令 thread
檢視所有執行緒資訊 預設是按照cpu資源佔用排名的
可以看到當前執行緒lettuce-nioEventLoop-4-1
佔用cpu高達47.75。其實這個執行緒名稱已經能定位到具體某個方向的問題了,所以執行緒名稱的定義需要有意義 為了方便排查問題。
可以看出因為我們程式使用了lettuce
做redis的使用者端,主要是使用了redis stream
StreamMessageListenerContainer.StreamMessageListenerContainerOptions<String, ObjectRecord<String, String>> containerOptions = StreamMessageListenerContainer.StreamMessageListenerContainerOptions.builder() .batchSize(10) // 一次性最多拉取多少條訊息 .targetType(String.class) // 目標型別。統一使用 String .executor(mqConsumerExecutor) .pollTimeout(Duration.ZERO)//0不超時 .build();
把.pollTimeout(Duration.ZERO)
這一句改為 .pollTimeout(Duration.ofMillis(10))
cpu就正常了。
原因就是設定了永不超時 資源得不到釋放。
改為指定時間超時後 程式一點問題都沒有了。
可以直接使用thread pid
上圖佔用最高的id為22 則輸入 thread 22
能看到類似jstack
的功能
"lettuce-nioEventLoop-4-1" Id=22 RUNNABLE at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:101)
還有一個更好用的命令 -n
引數能顯示top-n-threads 比上面一種更詳細
"lettuce-nioEventLoop-4-1" Id=22 cpuUsage=49.51% deltaTime=99ms time=392976ms RUNNABLE at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method) at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269) at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:101)
可以看出使用arthas
排除這類問題 比使用top -Hp
方便太多。當然這只是它的一個小功能而已。
以上就是arthas排查jvm中CPU佔用過高問題解決的詳細內容,更多關於arthas排查jvm CPU過高的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45