V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
heyjude321
V2EX  ›  Java

项目运行后,线程越来越多

  •  1
     
  •   heyjude321 · 2022-03-07 15:10:44 +08:00 · 2967 次点击
    这是一个创建于 1027 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家好,请教个问题。
    我的一个项目昨晚刚运行时用 top -Hp 显示 Threads 有 400 多。
    现在过了十几个小时 显示有 700 多。
    线程越来越多,这可能是什么原因呢?

    最近 dubbo 遇到几次 Thread pool is EXHAUSTED!
    初步判断是线程在 synchronized 内没退出,导致其他线程进不来。
    我暂时移除了一些没必要的 synchronized ,是否能解决问题有待验证。

    不知两者有没关联。

    我对线程方面的知识马马虎虎,现在一头雾水,麻烦大家了。

    top - 14:53:14 up 272 days, 14:33, 2 users, load average: 0.03, 0.08, 0.07
    Threads: 784 total, 0 running, 784 sleeping, 0 stopped, 0 zombie
    %Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
    KiB Mem : 16265568 total, 2255248 free, 4649916 used, 9360404 buff/cache
    KiB Swap: 0 total, 0 free, 0 used. 11268112 avail Mem

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    11757 root 20 0 10.4g 1.2g 15192 S 0.3 7.8 0:36.19 java
    11766 root 20 0 10.4g 1.2g 15192 S 0.3 7.8 0:30.22 java
    8721 root 20 0 10.4g 1.2g 15192 S 0.3 7.8 0:00.25 java
    1050 root 20 0 10.4g 1.2g 15192 S 0.3 7.8 0:00.17 java
    5155 root 20 0 10.4g 1.2g 15192 S 0.3 7.8 0:00.17 java
    11747 root 20 0 10.4g 1.2g 15192 S 0.0 7.8 0:00.00 java
    11748 root 20 0 10.4g 1.2g 15192 S 0.0 7.8 0:11.86 java
    11749 root 20 0 10.4g 1.2g 15192 S 0.0 7.8 0:07.78 java
    11750 root 20 0 10.4g 1.2g 15192 S 0.0 7.8 0:07.79 java
    11751 root 20 0 10.4g 1.2g 15192 S 0.0 7.8 0:07.77 java
    11752 root 20 0 10.4g 1.2g 15192 S 0.0 7.8 0:07.74 java
    11753 root 20 0 10.4g 1.2g 15192 S 0.0 7.8 0:07.78 java
    9 条回复    2022-03-08 00:07:02 +08:00
    registerrr
        1
    registerrr  
       2022-03-07 15:17:37 +08:00
    检查一下为啥线程结束不了,是不是发生死锁了。
    相关的命令:
    jps
    jstack
    fallingg
        2
    fallingg  
       2022-03-07 15:28:50 +08:00 via iPhone
    可以使用 alibaba 的 arthas 的 thread 命令,可以打印出对应的堆栈
    heyjude321
        3
    heyjude321  
    OP
       2022-03-07 16:47:16 +08:00
    @registerrr 线程越来越多了。现在 800 多了。
    看日志也看不出什么问题。没发现死锁。
    日志预览链接: https://pan.baidu.com/s/15DWI9xxCe9XSl_DVZkSdvg
    提取码:1234
    registerrr
        4
    registerrr  
       2022-03-07 16:59:40 +08:00
    代码里边是不是执行了好多次 new COSClient() ?找到了一个文章,应该就是你这个问题的原因
    https://www.jianshu.com/p/5955768d9305
    X0ray
        5
    X0ray  
       2022-03-07 17:08:31 +08:00
    httpClient 连接没有关闭
    heyjude321
        6
    heyjude321  
    OP
       2022-03-07 17:33:27 +08:00
    @registerrr 是的。 明白了。极有可能这里出问题了,这对象应该是可以复用的。
    感谢大佬。祝大佬心想事成,万事如意。
    babyzhang
        7
    babyzhang  
       2022-03-07 18:23:49 +08:00 via iPhone
    1024 就要 oom 了吧
    zxjunz
        8
    zxjunz  
       2022-03-07 19:48:29 +08:00
    和我以前一样,每次连接开一个 OkHttpClient 结果很快就 OOM 了
    night98
        9
    night98  
       2022-03-08 00:07:02 +08:00
    @registerrr 看的很迷惑,看起来应该是腾讯的对象存储,这种不都是声明成 spring 单例的么,居然还会 new 一个出来,new 就算了还不关闭。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2726 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:43 · PVG 20:43 · LAX 04:43 · JFK 07:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.