簡體   English   中英

jWebSocket java.lang.OutOfMemoryError:無法創建新的本機線程

[英]jWebSocket java.lang.OutOfMemoryError: unable to create new native thread

我正在嘗試在CentOS 5.8 (1and1 VPS)上運行jWebSocket服務器。 在服務器啟動后,客戶端發出了很少的請求(重新加載網頁),我收到此錯誤:

Exception in thread "jWebSocket TCP-Connector 01.33719.16" java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Thread.java:691)
        at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:943)
        at java.util.concurrent.ThreadPoolExecutor.ensurePrestart(ThreadPoolExecutor.java:1555)
        at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:333)
        at java.util.concurrent.ScheduledThreadPoolExecutor.schedule(ScheduledThreadPoolExecutor.java:546)
        at java.util.concurrent.ScheduledThreadPoolExecutor.submit(ScheduledThreadPoolExecutor.java:646)
        at org.jwebsocket.tcp.TimeoutOutputStreamNIOWriter.sendPacket(TimeoutOutputStreamNIOWriter.java:215)
        at org.jwebsocket.tcp.TCPConnector.sendPacket(TCPConnector.java:279)
        at org.jwebsocket.server.BaseServer.sendPacket(BaseServer.java:186)
        at org.jwebsocket.server.TokenServer.sendPacketData(TokenServer.java:405)
        at org.jwebsocket.server.TokenServer.sendTokenData(TokenServer.java:388)
        at org.jwebsocket.server.TokenServer.sendToken(TokenServer.java:312)
        at org.jwebsocket.plugins.TokenPlugIn.sendToken(TokenPlugIn.java:174)
        at org.jwebsocket.plugins.system.SystemPlugIn.sendWelcome(SystemPlugIn.java:397)
        at org.jwebsocket.plugins.system.SystemPlugIn.connectorStarted(SystemPlugIn.java:261)
        at org.jwebsocket.plugins.BasePlugInChain.connectorStarted(BasePlugInChain.java:126)
        at org.jwebsocket.server.TokenServer.connectorStarted(TokenServer.java:170)
        at org.jwebsocket.engines.BaseEngine.connectorStarted(BaseEngine.java:93)
        at org.jwebsocket.tcp.TCPEngine.connectorStarted(TCPEngine.java:320)
        at org.jwebsocket.tcp.TCPConnector$ClientProcessor.run(TCPConnector.java:502)
        at java.lang.Thread.run(Thread.java:722)

但是,當我在計算機上運行jWebSocket ,一切正常。 我使用virtualbox和CentOS 5.8全新安裝制作了自己的虛擬服務器,它也可以在其中運行。

我注意到1and1 VPS上的Java使用了大約1GB的內存(是我的計算機或virtualbox上的十倍)。 在1and1 VPS上,我有2GB的RAM(有一個錯誤),在Virtualbox上,jWebSocket運行得很好,只有512MB的RAM。

內存不足錯誤的可能原因是什么? 如果您有任何建議,請分享。 我不知道該怎么辦了。

檢查鏈接: http : //devgrok.blogspot.sk/2012/03/resolving-outofmemoryerror-unable-to.html
聽起來他們必須增加每個用戶限制的linux max進程。
至少與我所看到的問題的相似之處在於,您得到相同的異常+都運行linux :)

這是1and1( http://www.1and1.pl/ )虛擬主機問題。 他們將Parallels Virtuozzo容器與所謂的User Beancounters或UBC參數一起使用。 這是女巫限制我的原因。 您可以在/ proc / user_beancounters中看到此限制。 當達到“ numproc”的限制之一時,我的應用程序無法創建新線程。

編輯

當時,jWebSocket的設計方式是為每個傳入令牌創建一個線程,並且在不再需要該線程時不銷毀它。

我不再使用jWebSocket,而是將其替換為用PHP編寫的websocket服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM