【问题标题】:RMI over SSL - Slow communication基于 SSL 的 RMI - 通信缓慢
【发布时间】:2014-10-14 19:39:19
【问题描述】:

我在我的计算机上的两个虚拟机之间创建了一个测试程序。因此,我在 VMware 上的虚拟机上运行了一个 RMI 服务器,并且我在 VMware 上的另一个虚拟机上运行了一个 RMI 客户端。

我已经使用SslRMIServerSocketFactorySslRMIClientSocketFactory 设置了SSL,并且可以从客户端调用方法到服务器,让服务器响应返回值。所以现在我有两台在 VMware 上运行的 Ubuntu 机器。

发生的情况是客户端调用服务器,我必须等待大约 17 秒,直到服务器的响应到达客户端并在控制台上执行打印。 更新:该方法的调用速度很快。所有这些时间都由Registry.lookup() 函数占用。

17 秒的时间是不是太长了? 我知道虚拟机本质上很慢,再加上 SSL 正在运行的事实,但对于我正在做的事情来说,17 秒不是太多了吗?远程方法只是将两个整数相加并返回结果。

谢谢。

【问题讨论】:

  • 这不是您的问题的答案,而是更多的调试步骤。您是否尝试过在 ssl 之外进行计算?从历史上看,RMI 一直很慢,这也是人们转向更轻量级传输方法(如 json)的原因之一。现在,我不知道 RMI 是否在过去 15 年中加速了,但我没有听到“哦,json?”的喋喋不休。太慢了,我们搬到 RMI...'
  • 没有 SSL 的 RMI 工作正常。只需几毫秒即可获得远程调用方法的返回值。这就是为什么我要问 SSL 的引入是否会导致所有这些延迟是否正常。
  • 所以,我对你的问题做了一些 google-fu。请检查这个答案,看看它是否对您有帮助:stackoverflow.com/questions/11343132/rmi-responding-very-slow 您还可以打开 java 的 ssl 调试选项,看看那里是否有明显的东西。要打开 ssl 调试,请将 -Djavax.net.debug=ssl 添加到您的应用程序 vm 选项中。
  • 我在问这个问题之前看到了那个答案。我已经在服务器上定义了主机名属性。我已经把服务器的IP地址。事实证明,一直以来都是Registry.lookup() 调用……远程方法调用很快。虽然减速只发生在开始时,但我想知道这是否正常。如果不是,如何避免这种情况。
  • OK 现在你可以检查服务器的/etc/hosts 文件是否有客户端IP 的条目。如果没有,放一个?

标签: java performance ssl virtual-machine rmi


【解决方案1】:

为了安全起见,Java 在连接或接受套接字时会反向 DNS。您没有关于客户端上可用的服务器或服务器上可用的客户端的任何 DNS 或反向 DNS 信息。将服务器条目放入客户端的 /etc/hosts 文件并将客户端条目放入服务器的 /etc/hosts 文件修复了该问题。否则它将通过 DNS 服务器尝试并在继续之前等待响应超时。

【讨论】:

  • 那么,如果客户端IP发生变化,或者我有新客户端怎么办?有没有办法解决这个问题?
  • /etc/hosts 中执行它当然只是一种解决方法,您应该以某种方式直接在网络DNS 中执行它。如何依赖于平台。
  • 我的意思是:有没有办法阻止 Java 进行反向 DNS 处理?
  • 我不知道。
  • 我在将我的 RMI 客户端连接到同一台机器上的 RMI 服务器时遇到了同样的问题。在我的情况下,即使是从服务器中继承 UnicastRemoteObject 的对象的实例化也会导致超过 20 秒的延迟。使用 localhost 配置 /etc/hosts 并不能解决问题,在使用 RMI 之前,我必须在我的 java 应用程序中使用这一行:
【解决方案2】:

我在将我的 RMI 客户端连接到同一台机器上的 RMI 服务器时遇到了同样的问题。 在我的情况下,即使是从服务器中的 UnicastRemoteObject 继承的对象的实例化也会导致超过 20 秒的延迟。使用 localhost 配置 /etc/hosts 并不能解决问题,在使用 RMI 之前,我必须在我的 java 应用程序中使用这一行:

System.setProperty("java.rmi.server.hostname", "127.0.0.1");

【讨论】:

    猜你喜欢
    • 2017-10-24
    • 2015-07-18
    • 2011-08-16
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 2021-12-25
    • 2016-03-17
    • 1970-01-01
    相关资源
    最近更新 更多