0
JavaサーバーアプリケーションでjWebsocket libを使用してストレステスト(1分あたり数千件の接続)を実行していますが、しばらくしてプロセスは次のようなjWebsocketスレッドで完全に埋められます:jWebsocketたくさんの待機スレッド(待機中)
"jWebSocket TCP-Engine NIO writer" prio=10 tid=0x0000000000bf6000 nid=0x2eb9 waiting on condition [0x00007f1533bd9000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x000000062ab06e80> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
(上記の出力は、スレッドダンプから取得された)
は、誰もがこの問題に直面していますか?ソリューションを見つけるためのヒント
ありがとうございます!
編集。
大きな問題は、スレッドが終了されず、アプリケーションが終了するまで有効であることです。
を私は非常に重要な注意点を言及するのを忘れてしまった:)スレッドが破壊されていないと、アプリケーションがあるまで生き続けています再開されました。 –
あなたを悩ませる場合に備えて、私はあなたに「殺す」ソリューションを提供しました。あなたが見ているものは完全に正常です。スレッドは新しいタスクを待っています。それを実行するためのフィードを送り、タスクの実行を開始します。 – hoaz