最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決線程異常WAITING(parking)問題

 更新時間:2024年11月15日 08:47:13   作者:夷則sail  
文章總結:在項目中線程數(shù)量持續(xù)增長無法回收,導致服務器卡死和內存不足,通過分析發(fā)現(xiàn)是由于自定義線程池未執(zhí)行shutdown()關閉導致線程泄漏

線程異常WAITING(parking)

現(xiàn)象

在項目中線程數(shù)量持續(xù)增長,且基本無法回收關閉,線程數(shù)量一直累積達到幾萬,影響CPU開銷和性能,導致服務器卡死,連接上服務器后輸入指令提示“無可分配內存”。

查找原因

1.通過ps -eLf|grep '容器名'|wc -l命令找到項目的所占的線程數(shù)異常龐大,通過top -p pid H也發(fā)現(xiàn)該進程下大量占用資源的線程。

進入容器內查看堆棧信息。

2.通過**jstack -l pid| grep 'java.lang.Thread.State'**發(fā)現(xiàn)項目的線程狀態(tài)大多數(shù)都是WAITING(parking)狀態(tài)

分析是線程一直處于等待狀態(tài)一直在占用,造成GC無法執(zhí)行,且新請求進來時造成線程占用累計

3.打印當前JVM快照:

**jstack 7 > /opt/test.dump**

查看快照定位原因:

分析原因

在我的業(yè)務中每次處理請求時都會創(chuàng)建一個線程池去多鏈路執(zhí)行不同的流程,但是執(zhí)行完畢后沒有使用shutdown()關閉這個線程池對象

這樣線程池仍會通過take方法去取等待隊列中是否還有未完成的線程任務,等待隊列為空時將會一直等待

這樣就導致大量的線程hung在這里了(基本是只要方法被調一次,就會產生一個hung住的線程),所以有大量空線程一直占用,造成嚴重的線程泄漏

總結

在自定義線程池且未交給spring容器管理時,使用完畢的線程池一定要執(zhí)行shutDown()手動關閉線程池,這是編程上的疏忽。

找到原因后感覺問題很簡單,但是查找過程中還是碰壁不少,找過幾次都沒有找到最終原因。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 詳解Java中如何使用JFreeChart生成甘特圖

    詳解Java中如何使用JFreeChart生成甘特圖

    甘特圖是一種流行的項目管理工具,用于顯示項目的進度和任務分配,在Java開發(fā)中,JFreeChart是一個強大的開源圖表庫,能夠生成各種類型的圖表,下面我們就來看看如何使用JFreeChart生成甘特圖吧
    2025-01-01
  • 解決bootstrap.yml不生效,無法優(yōu)先于application.yml文件加載問題

    解決bootstrap.yml不生效,無法優(yōu)先于application.yml文件加載問題

    文章主要討論了在Spring Boot項目中,`bootstrap.yml`文件無法優(yōu)先于`application.yml`文件加載的問題,原因是缺少了`nacos-config`依賴,且需要確保Spring Boot版本與`nacos-config`版本匹配,作者希望通過分享個人經驗,幫助他人解決類似問題
    2024-12-12
  • SpringBoot中公共字段自動填充的常用技巧

    SpringBoot中公共字段自動填充的常用技巧

    這篇文章主要為大家詳細介紹了SpringBoot中公共字段自動填充的幾個常用技巧,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-10-10
  • Java Collection集合遍歷運行代碼實例

    Java Collection集合遍歷運行代碼實例

    這篇文章主要介紹了Java Collection集合遍歷運行代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • springboot使用過濾器詳解

    springboot使用過濾器詳解

    本文主要介紹了過濾器的基本概念,過濾器的生命周期,以及如何通過注解方式和非注解方式實現(xiàn)過濾器,過濾器是客戶端與服務器資源文件之間的一道過濾網(wǎng),能夠幫助我們過濾不符合要求的請求,通常用作Session校驗
    2024-10-10
  • 基于swagger參數(shù)與實體中參數(shù)不一致的原因分析

    基于swagger參數(shù)與實體中參數(shù)不一致的原因分析

    這篇文章主要介紹了基于swagger參數(shù)與實體中參數(shù)不一致的原因分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java之BigDecimal的坑及解決

    Java之BigDecimal的坑及解決

    這篇文章主要介紹了Java之BigDecimal的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 關于Java的對象序列化流和反序列化流詳細解讀

    關于Java的對象序列化流和反序列化流詳細解讀

    這篇文章主要介紹了關于Java的對象序列化流和反序列化流,對象序列化:就是將對象保存到磁盤中,或者在網(wǎng)絡中傳輸對象,反之,自己序列還可以從文件中讀取回來,重構對象,對它進行反序列化,需要的朋友可以參考下
    2023-05-05
  • SpringBoot中使用Swagger的超簡單方法

    SpringBoot中使用Swagger的超簡單方法

    大家一致認為springBoot使用swagger太麻煩了,每次都需要編寫config,今天小編告訴大家一種超簡單配置方法,教大家如何整合swagger,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • java hasNext()使用實例解析

    java hasNext()使用實例解析

    這篇文章主要介紹了java hasNext()使用實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09

最新評論

隆德县| 清河县| 晋中市| 舟山市| 孝昌县| 高青县| 舟山市| 靖州| 宣汉县| 新兴县| 合山市| 新竹县| 安徽省| 五莲县| 安顺市| 航空| 左云县| 建阳市| 桂平市| 象山县| 莱阳市| 金堂县| 琼结县| 宜宾县| 儋州市| 云和县| 高密市| 龙泉市| 孟村| 米脂县| 宜阳县| 梁河县| 鄂托克前旗| 泽库县| 桐庐县| 彭阳县| 菏泽市| 张家口市| 湟源县| 乐昌市| 本溪市|