我们正在使用RMI集成到weblogic服务器。我们在tomcat服务器上的webapp中运行客户端。我们在响应时间方面遇到了奇怪的问题。一些请求将在~20ms内响应,但有些将需要10-12秒。在~20ms和10-12秒之间没有响应。
有些事情值得一提
我们正在使用wlfullclient 10.3.2。我必须删除它中的一些类才能使它在Tomcat上运行。这是一个包含Servlet.class的包。丑陋,我知道,但是我无法使用wlthinclient或其他软件包来处理我的webapp。此外,我们正在使用由中间件人员制作的自定义rmi客户端,它在我们已运行多年的weblogic服务器上运行良好。
当呼叫需要10-12秒时,似乎在此时间跨度结束之前没有tcp流量。我这里只监控了端口7461。
我的/ etc / hosts文件中有主机名,所以它不应该是DNS问题
我只在我们的测试/产品服务器上遇到这种情况,而不是在我的工作站上运行Tomcat上的webapp时
通过调试问题,似乎挂起发生在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)
有什么想法吗?
答案 0 :(得分:0)
这里的问题是weblogic使用集群中我们在设置中定义的其他节点。有4个节点,我们在防火墙中打开了3个节点。最后一个对我们来说是未知的,当weblogic试图访问它时,它会超时,然后从另一台服务器得到响应。