gpt4 book ai didi

java - rmi 调用 weblogic 的高响应时间

转载 作者:行者123 更新时间:2023-11-28 23:40:56 26 4
gpt4 key购买 nike

我们正在使用 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)

有什么想法吗?

最佳答案

这里的问题是 weblogic 使用我们在设置中定义的集群中的其他节点。有 4 个节点,我们在防火墙中为其中的 3 个打开了。最后一个对我们来说是未知的,当 weblogic 试图访问它时,它超时,然后从另一个服务器得到响应。

关于java - rmi 调用 weblogic 的高响应时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19724136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com