0

RMIを使用してweblogicサーバーに統合しています。Tomcat サーバー上の webapp でクライアントを実行しています。応答時間に奇妙な問題が発生しています。リクエストによっては 20 ミリ秒以内に応答するものもありますが、10 ~ 12 秒かかるものもあります。20 ミリ秒から 10 ~ 12 秒の間に応答がありません。

言及する価値のあるいくつかのこと

  1. wlfullclient 10.3.2 を使用しています。Tomcat で実行できるようにするには、いくつかのクラスを削除する必要がありました。これは Servlet.class を含むパッケージでした。醜いことはわかっていますが、自分の webapp を wlthinclient や他のパッケージで動作させることができませんでした。また、ミドルウェア担当者が作成したカスタム rmi クライアントを使用しています。これは、私たちが何年にもわたって実行してきた weblogic サーバーでうまく機能します。

  2. 呼び出しに 10 ~ 12 秒かかると、この時間の最後まで TCP トラフィックがないように見えます。ここではポート 7461 のみを監視しました。

  3. /etc/hosts ファイルにホスト名があるので、DNS の問題ではないはずです

  4. これは、ワーク ステーションの Tomcat で Web アプリケーションを実行したときではなく、テスト/本番サーバーでのみ発生しています。

  5. 問題のデバッグから、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)

何か案は?

4

1 に答える 1

0

ここでの問題は、weblogic がセットアップで定義したクラスター内の他のノードを使用することでした。4 つのノードがあり、そのうちの 3 つをファイアウォールで開いていました。最後は不明で、weblogic がアクセスしようとすると、タイムアウトになり、別のサーバーから応答がありました。

于 2013-11-05T06:44:17.933 に答える