项目运行后,线程越来越多
大家好,请教个问题。
我的一个项目昨晚刚运行时用 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 ----------------------- 以下是精选回复-----------------------
答:检查一下为啥线程结束不了,是不是发生死锁了。
相关的命令:
jps
jstack
答:可以使用 alibaba 的 arthas 的 thread 命令,可以打印出对应的堆栈
答:代码里边是不是执行了好多次 new COSClient() ?找到了一个文章,应该就是你这个问题的原因
https://www.jianshu.com/p/5955768d9305
答:httpClient 连接没有关闭
答:1024 就要 oom 了吧
答:和我以前一样,每次连接开一个 OkHttpClient 结果很快就 OOM 了
0条评论