我有一個 Ubuntu 16.04.5 服務器,它以 root 身份運行多個 Java 應用程序。應用程序定期(大約每 30 分鐘到 1 小時)從OutOfMemoryError: unable to create new native thread. 我注意到,應用程序不會單獨崩潰,而是多個應用程序同時崩潰。我不知道是什么原因導致的,而且我無法找出我需要更改的內容來解決此問題。我關注了一些關于該錯誤的文章并經歷了多種可能的原因,但它們似乎并不適用于我的情況:修復線程創建率應用程序定期創建線程,但許多線程也會死掉。這意味著并發線程數永遠不會超過 10k。我通過生成線程轉儲和計數線程來檢查是否存在線程創建失控的問題,但線程數從未超過前面提到的 10k。增加操作系統的線程限制當我運行時ulimit -u它返回1546669。這應該夠了吧?為機器分配更多 RAM我使用了大約 7GB 的可用 16GB RAM。這是我的 htop 視圖:附加信息Java 版本:錯誤的完整錯誤堆棧跟蹤:java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) at java.lang.Thread.start(Thread.java:717) at de.domisum.lib.auxilium.util.java.ThreadUtil.createAndStartThread(ThreadUtil.java:126) at de.domisum.lib.auxilium.util.java.ThreadUtil.createAndStartThread(ThreadUtil.java:114) at de.domisum.lib.auxilium.run.RunNotifyOnTimeout.run(RunNotifyOnTimeout.java:32) at de.domisum.lib.auxilium.util.ticker.Ticker.tickWithTimeout(Ticker.java:119) at de.domisum.lib.auxilium.util.ticker.Ticker.run(Ticker.java:108) at java.lang.Thread.run(Thread.java:748)來自出現錯誤的應用程序的線程轉儲:thread dump垃圾收集器日志:gc log1 gc log2 gc log3
添加回答
舉報
0/150
提交
取消