2012-08-24 49 views
0

我试图在CentOS 5.8(1和1 VPS)上运行jWebSocket服务器。只需将服务器的启动和从客户数请求(重装网页)后,我得到这个错误:jWebSocket java.lang.OutOfMemoryError:无法创建新的本地线程

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上使用了10倍以上)。在1和1 VPS我有2GB的RAM(有一个错误),并在VirtualBox jWebSocket运行得很好,只有512MB的RAM。

什么可能是这种内存不足错误的原因?如果您有任何建议,请分享。我不知道该怎么办。

回答

0

它的1and1(http://www.1and1.pl/)虚拟主机的问题。他们使用Parallels Virtuozzo Containers和所谓的用户Beancounters或UBC参数。这是一组限制女巫是我的问题的原因。你可以在/ proc/user_beancounters中看到这个限制。当一个名为“numproc”的限制达到时,我的应用程序无法创建新线程。

编辑

当时jWebSocket被设计在方式,它是创造每个传入令牌一个线程,而不是破坏它,当没有更多需要这个线程。

我不再使用jWebSocket,我用用PHP编写的websocket serwer替换它。

相关问题