0

jWebSocketサーバーをCentOS 5.8(1and1 VPS)で実行しようとしています。サーバーの起動とクライアントからのいくつかのリクエスト (Web ページのリロード) の直後に、次のエラーが発生します。

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自分のコンピューターで実行すると、すべて正常に動作します。virtualboxCentOS 5.8の新規インストールを使用して独自の仮想サーバーを作成しましたが、そこでも機能しています。

1and1 VPS の Java が 1 GB までの大量のメモリを使用していることに気付きました (私のコンピューターまたは仮想ボックスの 10 倍)。1and1 VPS には 2GB の RAM があり (エラーがあります)、Virtualbox では jWebSocket は 512MB の RAM で問題なく動作しています。

このメモリ不足エラーの原因は何ですか? 提案があれば共有してください。これ以上どうすればいいのかわからない。

4

2 に答える 2

0

1and1 ( http://www.1and1.pl/ ) の仮想ホスティングの問題です。それらは、いわゆるユーザー Beancounters または UBC パラメータを備えた Parallels Virtuozzo Containers を使用します。それは私の問題の原因だった制限の魔女のセットです。この制限は /proc/user_beancounters で確認できます。「numproc」と呼ばれる制限の 1 つに達すると、アプリケーションは新しいスレッドを作成できません。

編集

当時、jWebSocket は、着信トークンごとに 1 つのスレッドを作成し、このスレッドが不要になったときにスレッドを破棄しないように設計されていました。

私はもう jWebSocket を使用していません。PHP で書かれた websocket serwer に置き換えました。

于 2012-09-06T10:35:53.537 に答える
0

リンクを確認してください:http://devgrok.blogspot.sk/2012/03/resolving-outofmemoryerror-unable-to.html
ユーザー制限ごとのLinux最大プロセスを増やす必要があったようです。
少なくとも私が見るあなたの問題との類似点は、同じ例外が発生し、両方ともLinuxを実行することです:)

于 2012-08-24T05:03:53.007 に答える