リバースajaxベースのWeb用に、UbunuのJetty6でJavaWebサーバーを実行しています。また、ブラウザにデータを再送信するスレッドの遅延に深刻な問題があります。非常に多くの場合、一部のスレッドは長時間スリープし始めます。1秒以上のように、時には数時間も。最初に、それはajaxライブラリ(DWR)のバグであり、Jettyの問題であり、Javaのバグであると考えましたが、すべての疑いはおそらく間違っています。私はこの問題を解決しようとして数週間を失いました。私は完全に迷子になっています。私が試しなかった唯一の考えは、Windowsなどの別のOSで実行することです。通常遅れるスレッドのスタックトレースは次のとおりです。
Cancelled at this stacktrace: at java.lang.Object.wait(Native Method)
at org.mortbay.io.nio.SelectChannelEndPoint.blockWritable(SelectChannelEndPoint.java:279)
at org.mortbay.jetty.AbstractGenerator$Output.blockForOutput(AbstractGenerator.java:544)
at org.mortbay.jetty.AbstractGenerator$Output.flush(AbstractGenerator.java:571)
at org.mortbay.jetty.HttpConnection$Output.flush(HttpConnection.java:997)
at org.mortbay.jetty.AbstractGenerator$Output.write(AbstractGenerator.java:648)
at org.mortbay.jetty.AbstractGenerator$Output.write(AbstractGenerator.java:579)
at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:109)
at org.mortbay.jetty.AbstractGenerator$OutputWriter.write(AbstractGenerator.java:903)
at org.mortbay.jetty.AbstractGenerator$OutputWriter.write(AbstractGenerator.java:752)
at org.mortbay.jetty.AbstractGenerator$OutputWriter.write(AbstractGenerator.java:741)
at java.io.PrintWriter.write(PrintWriter.java:412)
at java.io.PrintWriter.write(PrintWriter.java:429)
at java.io.PrintWriter.print(PrintWriter.java:559)
at java.io.PrintWriter.println(PrintWriter.java:695)
at org.directwebremoting.dwrp.PlainScriptConduit.addScript(PlainScriptConduit.java:93)
at org.directwebremoting.impl.DefaultScriptSession.addScript(DefaultScriptSession.java:239)
at server.comunication.dwr.OneReverseDWRServer.sendLocalBuffer(OneReverseDWRServer.java:385)
at server.comunication.dwr.OneReverseDWRServer.sendMessageLocal(OneReverseDWRServer.java:363)
at server.comunication.dwr.OneReverseDWRServer.sendMessage(OneReverseDWRServer.java:412)
at server.comunication.messaging.SendTask.call(SendTask.java:53)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
別の突堤接続セレクターを試したところ、スタックトレースが異なりましたが、同様の場所で待機していました。JettyとJavaの組み合わせの多くのバージョンを試しました。NIOのバグかもしれないと思いましたが、セレクターをnon-nioに変更すると、他の場所にスタックされていました。
Linuxで問題になる可能性がありますか?ルートとして実行しています。待機中のスレッドを強制的に弱めるように変更できるubuntuの設定はありますか?pls。助けて、私はここで完全に迷子になっています。
ありがとう