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

2022-03-07 15:10:44 +08:00
 heyjude321
大家好,请教个问题。
我的一个项目昨晚刚运行时用 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
2964 次点击
所在节点    Java
9 条回复
registerrr
2022-03-07 15:17:37 +08:00
检查一下为啥线程结束不了,是不是发生死锁了。
相关的命令:
jps
jstack
fallingg
2022-03-07 15:28:50 +08:00
可以使用 alibaba 的 arthas 的 thread 命令,可以打印出对应的堆栈
heyjude321
2022-03-07 16:47:16 +08:00
@registerrr 线程越来越多了。现在 800 多了。
看日志也看不出什么问题。没发现死锁。
日志预览链接: https://pan.baidu.com/s/15DWI9xxCe9XSl_DVZkSdvg
提取码:1234
registerrr
2022-03-07 16:59:40 +08:00
代码里边是不是执行了好多次 new COSClient() ?找到了一个文章,应该就是你这个问题的原因
https://www.jianshu.com/p/5955768d9305
X0ray
2022-03-07 17:08:31 +08:00
httpClient 连接没有关闭
heyjude321
2022-03-07 17:33:27 +08:00
@registerrr 是的。 明白了。极有可能这里出问题了,这对象应该是可以复用的。
感谢大佬。祝大佬心想事成,万事如意。
babyzhang
2022-03-07 18:23:49 +08:00
1024 就要 oom 了吧
zxjunz
2022-03-07 19:48:29 +08:00
和我以前一样,每次连接开一个 OkHttpClient 结果很快就 OOM 了
night98
2022-03-08 00:07:02 +08:00
@registerrr 看的很迷惑,看起来应该是腾讯的对象存储,这种不都是声明成 spring 单例的么,居然还会 new 一个出来,new 就算了还不关闭。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/838615

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX