最近發現項目運作中總是會出現一個問題。
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個線程。
我們項目有一個開啟了上萬線程。必然是有問題了。