最近发现项目运行中总是会出现一个问题。
java.lang.outofmemoryerror unable to create new native thread
问题的原因是java线程开启过多,超过了服务器的负载。
我们的项目是因为调用了腾讯云的cos,它最下来一句很小的shutdowm没看到,所以导致了线程开启过多。
排查方式。网上说用ulimit -n。可自行尝试。
我这边使用的是:
pstree -up | less
返回类似
|-java(4793,user)-+-{java}(4795)
| |-{java}(4796)
| |-{java}(4797)
| |-{java}(4798)
| |-{java}(4799)
| |-{java}(4800)
| |-{java}(4801)
| |-{java}(4802)
4793为进程ID
可以看到 4793 的程序开启了8个线程。
我们项目有一个开启了上万线程。必然是有问题了。