關於“java.lang.OutOfMemoryError : unable to create new native Thread”的報錯問題


好吧 我發誓這是postgresql的Mirroring Controller的RT測試的最后一個坑了。

在這個RT測試的最后,要求測試Mirroring Controller功能在長時間運行下的穩定性和性能問題,使用postgresql的JDBC接口不斷的向數據庫中寫數據和讀數據。
在運行時,拋出了錯誤:

java.lang.OutOfMemoryError : unable to create new native Thread.

具體截圖如下:

在查看日志文件的時候,也有以下出錯信息:

Error occurred during initialization of VM...

經過百度,找到方法:

既然報“OutOfMemoryError”,而且還是“ unable to create new native Thread.”,那么很可能是程序申請的Thread數超過了系統能夠承載的限制。但是作為一台性能還不錯的服務器,沒理由系統資源不夠用啊?

好的,那我們用ulimit命令查看一下系統的對進程資源的控制:

ulimit -a  

輸出如下:

似乎是max user processes數不足?
還是使用ulimit 命令,把max user processes放大一倍試試:

ulimit -u 2048  (使用postgres用戶運行該命令)

得到:

(這里值得說一下,因為我這里只是想臨時改變當前shell的設置,要是想永久設置要修改/etc/security/limits.conf文件,請自行百度)。

修改完之后再運行:

一切OK!打完收工!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM