Мы интегрируемся в веб-сервер с использованием RMI. Мы запускаем клиента в webapp на сервере tomcat. У нас странные проблемы со временем ответа. Часть запроса ответит в ~ 20 мс, но некоторые из них займут 10-12 секунд. Нет ответов между ~ 20 мс и 10-12 секунд.Высокое время отклика на вызовы rmi на weblogic
Несколько вещей, о которых стоит упомянуть
Мы используем wlfullclient 10.3.2. Мне пришлось удалить некоторые классы, чтобы он мог работать на Tomcat. Это был пакет с Servlet.class. Ужасно, я знаю, но я не смог взять свою работу с помощью wap или других пакетов. Кроме того, мы используем пользовательский клиент rmi, созданный реестрами промежуточного программного обеспечения, и он хорошо работает на сервере weblogic, который мы запускаем целую вечность.
Когда вызов длится 10-12 секунд, кажется, что до начала этого периода времени нет трафика tcp. Я только контролировал порт 7461 здесь.
У меня есть имена хостов в моей/и т.д./хосты файл, так что не должно быть проблемой DNS
Я испытываю это только на нашем тестовом сервере/прод, не тогда, когда я бегу на веб-приложение Tomcat на моей рабочей станции
От отладки проблемы кажется, что зависание происходит в weblogic.security.Security.runAs().
Edit: я бросил нить, и, кажется, у меня есть какие-то блокировки проблемы с розеткой.
"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)
Любые идеи?
Посмотрите на следующее сообщение, чтобы узнать, что я сделал с wlfullclient: http://stackoverflow.com/questions/19137191/rmi-from-tomcat-to-weblogic – user1682170
Почему RMI? Это своего рода наследие, а не брандмауэр. Не можете ли вы создать некоторую оболочку REST/SOAP, развернутую в weblogic, чтобы интегрироваться с этим приложением? Я уверен, что полный клиент WLS довольно тяжелый, и он будет больше, чем ваше приложение для интеграции. –
Если вы подозреваете, что медлительность связана с безопасностью, то это может быть ваша безопасность домена WebLogic, которая удерживает ее. Трудно ничего советовать, не зная подробностей. Постарайтесь максимально упростить параметры безопасности для домена и развернутого приложения. –