RMIを使用してweblogicサーバーに統合しています。Tomcat サーバー上の webapp でクライアントを実行しています。応答時間に奇妙な問題が発生しています。リクエストによっては 20 ミリ秒以内に応答するものもありますが、10 ~ 12 秒かかるものもあります。20 ミリ秒から 10 ~ 12 秒の間に応答がありません。
言及する価値のあるいくつかのこと
wlfullclient 10.3.2 を使用しています。Tomcat で実行できるようにするには、いくつかのクラスを削除する必要がありました。これは Servlet.class を含むパッケージでした。醜いことはわかっていますが、自分の webapp を wlthinclient や他のパッケージで動作させることができませんでした。また、ミドルウェア担当者が作成したカスタム rmi クライアントを使用しています。これは、私たちが何年にもわたって実行してきた weblogic サーバーでうまく機能します。
呼び出しに 10 ~ 12 秒かかると、この時間の最後まで TCP トラフィックがないように見えます。ここではポート 7461 のみを監視しました。
/etc/hosts ファイルにホスト名があるので、DNS の問題ではないはずです
これは、ワーク ステーションの Tomcat で Web アプリケーションを実行したときではなく、テスト/本番サーバーでのみ発生しています。
問題のデバッグから、weblogic.security.Security.runAs() でハングが発生しているようです。
編集:スレッドをダンプしましたが、ソケットに何らかのロックの問題があるようです。
"http-bio-8082-exec-45" daemon prio=10 tid=0x0000000002a96000 nid=0x318c runnable [0x00007f09ca8e3000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
- locked <0x000000076586d0e0> (a java.net.SocksSocketImpl)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at weblogic.socket.SocketMuxer.newSocket(SocketMuxer.java:342)
at weblogic.socket.ChannelSocketFactory.createSocket(ChannelSocketFactory.java:79)
at weblogic.socket.BaseAbstractMuxableSocket.createSocket(BaseAbstractMuxableSocket.java:133)
at weblogic.rjvm.t3.MuxableSocketT3.newSocketWithRetry(MuxableSocketT3.java:206)
at weblogic.rjvm.t3.MuxableSocketT3.connect(MuxableSocketT3.java:375)
at weblogic.rjvm.t3.ConnectionFactoryT3.createConnection(ConnectionFactoryT3.java:33)
at weblogic.rjvm.ConnectionManager.createConnection(ConnectionManager.java:1773)
at weblogic.rjvm.ConnectionManager.findOrCreateConnection(ConnectionManager.java:1416)
- locked <0x000000076586c7f8> (a weblogic.rjvm.ConnectionManagerClient)
- locked <0x000000076586c7f8> (a weblogic.rjvm.ConnectionManagerClient)
at weblogic.rjvm.ConnectionManager.bootstrap(ConnectionManager.java:437)
at weblogic.rjvm.ConnectionManager.bootstrap(ConnectionManager.java:396)
at weblogic.rjvm.RJVMImpl.ensureConnectionEstablished(RJVMImpl.java:303)
at weblogic.rjvm.RJVMImpl.getOutputStream(RJVMImpl.java:347)
at weblogic.rjvm.RJVMImpl.getRequestStreamInternal(RJVMImpl.java:609)
at weblogic.rjvm.RJVMImpl.getRequestStream(RJVMImpl.java:560)
at weblogic.rjvm.RJVMImpl.getOutboundRequest(RJVMImpl.java:786)
at weblogic.rmi.internal.BasicRemoteRef.getOutboundRequest(BasicRemoteRef.java:159)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:341)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259)
何か案は?