欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決線程異常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中的應用小結

    深入解析面向對象編程在Java中的應用小結

    本文詳細介紹了面向對象編程的基本概念,包括類和對象、封裝、繼承和多態(tài),通過具體的Java代碼示例,展示了如何在Java中應用這些面向對象編程的核心思想,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • java中hashCode方法與equals方法的用法總結

    java中hashCode方法與equals方法的用法總結

    總的來說,Java中的集合(Collection)有兩類,一類是List,再有一類是Set。前者集合內的元素是有序的,元素可以重復;后者元素無序,但元素不可重復
    2013-10-10
  • 淺談redis key值內存消耗以及性能影響

    淺談redis key值內存消耗以及性能影響

    這篇文章主要介紹了淺談redis key值內存消耗以及性能影響,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • java實現(xiàn)系統(tǒng)捕獲異常發(fā)送郵件案例

    java實現(xiàn)系統(tǒng)捕獲異常發(fā)送郵件案例

    這篇文章主要為大家詳細介紹了java實現(xiàn)系統(tǒng)捕獲異常發(fā)送郵件案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • JAVA中的OutputStreamWriter流解析

    JAVA中的OutputStreamWriter流解析

    這篇文章主要介紹了JAVA中的OutputStreamWriter流解析,OutputStreamWriter提供了一種方便的方式將字符數(shù)據(jù)寫入到輸出流中,并進行字符編碼轉換,它是Java中處理字符流和字節(jié)流之間轉換的重要工具之一,需要的朋友可以參考下
    2023-10-10
  • java中壓縮文件并下載的實例詳解

    java中壓縮文件并下載的實例詳解

    在本篇內容里小編給大家整理的是一篇關于java中壓縮文件并下載的實例詳解內容,有興趣的朋友們可以學習下。
    2021-02-02
  • 使用maven命令安裝jar包到本地倉庫的方法步驟

    使用maven命令安裝jar包到本地倉庫的方法步驟

    這篇文章主要介紹了使用maven命令安裝jar包到本地倉庫的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • 解決tk.mybatis中寫自定義的mapper的問題

    解決tk.mybatis中寫自定義的mapper的問題

    這篇文章主要介紹了使用tk.mybatis中寫自定義的mapper的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 解決Java中new?BigDecimal()的坑

    解決Java中new?BigDecimal()的坑

    這篇文章主要介紹了解決Java中new?BigDecimal()的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 教你如何用Java簡單爬取WebMagic

    教你如何用Java簡單爬取WebMagic

    今天給大家?guī)淼氖顷P于Java爬蟲的相關知識,文章圍繞著Java如何爬取WebMagic展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評論