成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

優(yōu)化排查線程阻塞:CompletableFuture 和 DiscardPolicy

開發(fā) 前端
既然不是死循環(huán)、CPU空轉(zhuǎn)。那是不是代碼阻塞的問題呢。導(dǎo)出 66182 進(jìn)程jvm的 stack 文件 jstack -l 66182 > block66182.jstack。因?yàn)橹朗莌ttp 線程的問題。

[[426087]]

本文轉(zhuǎn)載自微信公眾號(hào)「潛行前行」,作者cscw 。轉(zhuǎn)載本文請(qǐng)聯(lián)系潛行前行公眾號(hào)。

 問題發(fā)現(xiàn)

1 前天大佬通過prometheus發(fā)現(xiàn) tomcat http busy狀態(tài)的線程這幾天呈線性遞增。每一天增加3個(gè)

排查問題

1:找到busy線程在哪。通過jvm自帶的 jps 命令可以找到服務(wù)對(duì)應(yīng)的進(jìn)程ID:66182$>$top -Hp 66182

$pidstat -u -p 66182 1 5

大部分的線程都正常,cpu利用率不高,而且線程ID變動(dòng)快,基本排除 死循環(huán)、CPU 空轉(zhuǎn)的問題

2:既然不是死循環(huán)、CPU空轉(zhuǎn)。那是不是代碼阻塞的問題呢。導(dǎo)出 66182 進(jìn)程jvm的 stack 文件 jstack -l 66182 > block66182.jstack。因?yàn)橹朗莌ttp 線程的問題。http 的開頭一般都是 http-nio ??梢允褂?grep -A 15 'http-nio' block66182.jstack 輸出一些關(guān)鍵信息。找了很久,多數(shù)http 都是正常狀態(tài)。然后還找到了項(xiàng)目代碼 updateXYDVerifiedCodeByDate 之類的。定位到具體,發(fā)現(xiàn)是一個(gè)定時(shí)任務(wù)

3 查了下 xxl-task 調(diào)度日志。凌晨左右調(diào)度了十次,失敗了三次,和在prometheus發(fā)現(xiàn)的 busy http線程增加的規(guī)律是一致的

4 查找代碼發(fā)現(xiàn)是 CompletableFuture 調(diào)用get阻塞住了。后來改成 future.get(15, TimeUnit.SECONDS);。則每隔 15 秒報(bào)錯(cuò)一次。但是在promethues 監(jiān)控到 verifiedCodeQueryExecutor 的線程隊(duì)列是空的。

4.1 promethues 監(jiān)控到的線程隊(duì)列數(shù)為空

5 沒有任務(wù) CompletableFuture 的get方法還在執(zhí)行,查看下 verifiedCodeQueryExecutor 的定義。發(fā)現(xiàn),阻塞隊(duì)列的拒絕策略 是 DiscardPolicy 丟棄。也就是任務(wù)丟棄了不被執(zhí)行,而封裝成的CompletableFuture 自然就不會(huì)有結(jié)果返回,因此一直會(huì)被阻塞,而改了代碼則是超時(shí)返回。真相大白。。。。。

解決問題

1:隊(duì)列無限,好像不太好,不接受

2:自定義拒絕策略

  1. new RejectedExecutionHandler(){ 
  2.             @Override 
  3.             public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) { 
  4.                 throw new RuntimeException(" over size error "); 
  5.             } 
  6.         } 

3:但考慮到任務(wù)必須被處理掉,任務(wù)不能被丟棄啊。so 暫時(shí)用 CallerRunsPolicy 策略,executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());

4:后面再優(yōu)化

 

 

責(zé)任編輯:武曉燕 來源: 潛行前行
相關(guān)推薦

2024-08-06 09:43:54

Java 8工具編程

2021-06-04 18:14:15

阻塞非阻塞tcp

2023-06-02 18:37:14

Dubbo異步化接口

2022-09-06 08:25:13

線程異步任務(wù)

2018-01-11 08:24:45

服務(wù)器模型詳解

2025-02-28 09:20:00

Future開發(fā)代碼

2017-12-21 15:48:11

JavaCompletable

2024-01-11 12:14:31

Async線程池任務(wù)

2014-10-09 09:48:14

JavaScript

2024-07-12 09:12:47

2021-02-22 17:18:35

MySQLSQL行鎖

2010-03-16 19:08:03

Java線程同步

2020-07-13 09:05:47

2012-10-10 10:00:27

同步異步開發(fā)Java

2021-11-14 05:00:56

排查Sdk方式

2010-03-15 18:34:08

Java多線程

2010-01-28 09:55:05

性能優(yōu)化

2024-09-10 09:05:12

SpringREST并發(fā)

2018-05-17 09:46:40

apachenginx阻塞

2021-06-06 16:56:49

異步編程Completable
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: aaa大片免费观看 | 久热爱| 99在线观看视频 | 久久久久久免费精品一区二区三区 | 免费三级网 | 免费网站国产 | 在线观看视频你懂得 | 久久久久久91香蕉国产 | 一区二区三区四区在线 | a级在线免费视频 | 欧美在线天堂 | 中文字幕av亚洲精品一部二部 | 久久精品免费看 | 亚洲91av| 欧美精品一区二区三区视频 | 国产一区二区精 | 中文字幕精品一区 | 国产久| 91精品国产91久久久久福利 | 波多野结衣一区二区三区在线观看 | 欧美视频精品 | 欧美一区二区三区在线观看 | 羞羞的视频免费在线观看 | 波多野结衣精品在线 | 少妇特黄a一区二区三区88av | 国产精品一区二区三区在线 | 美女国产精品 | 日本人麻豆 | 午夜性色a√在线视频观看9 | 成人欧美一区二区三区黑人孕妇 | 天天av综合| 中文字幕国产视频 | 欧美性tv| m豆传媒在线链接观看 | 一区二区影视 | 国产成人免费视频网站视频社区 | 看a网站 | 美女久久 | 一级网站| www久久| 久久精品一级 |