gpt4 book ai didi

Java RMI - 从 Ubuntu 到 OSX 的远程调用超慢

转载 作者:行者123 更新时间:2023-11-30 05:51:20 25 4
gpt4 key购买 nike

当我从 OSX 服务器上的 RMI Ubuntu 客户端调用方法并将 UnicastRemoteObject 作为参数传递时,速度非常慢。太慢了,最终它被执行了,但更有可能的是,我在 2-3 分钟后收到超时异常。两台机器都在同一个网络中。这是一个新安装的 Ubuntu 12.04。我可以在使用的 RMI 端口上从 Ubuntu 机器远程登录到 OSX 机器,所以在这一点上,这似乎不是问题。我也可以在没有此 UnicastRemoteObject 参数的情况下调用服务器上的方法,并且一切正常。从 OSX 到 OSX 也很好...

服务器是如何启动的:

LocateRegistry.createRegistry(port);
nodeManager = new NodeManagerImpl(maxConfigurationsPerNode, true);
Registry registry = LocateRegistry.getRegistry(host, port);
registry.rebind("NodeManager", nodeManager);

这是客户端如何连接和调用方法:

Registry registry = LocateRegistry.getRegistry(host, port);
nodeManager = (NodeManager) registry.lookup("NodeManager");
handler = new NodeHandlerImpl();
id = nodeManager.register(handler, id);

NodeHandlerImpl 基本上是这样的:

public class NodeHandlerImpl extends UnicastRemoteObject implements NodeHandler {
public NodeHandlerImpl(boolean noSSL) throws RemoteException {
super(0, null, null);
}
....
}

“注册”的调用需要很长时间……NodeHandler 扩展了 Remote。当我删除参数处理程序时,一切都再次正常工作......

几个小时以来我有点卡在这里,任何线索都会很棒。

//编辑:是的,反向 DNS 是错误。有了这个提示,我找到了这个网站: http://www.communardo.de/home/techblog/2008/09/17/rmi-kommunikation-zu-remote-hosts-mit-unguenstiger-dns-konfiguration/

所以我将我的客户端连接代码更改为以下,一切正常:

System.setProperty("java.rmi.server.hostname", host);
Registry registry = LocateRegistry.getRegistry(host, port);
nodeManager = (NodeManager) registry.lookup("NodeManager");
handler = new NodeHandlerImpl();
id = nodeManager.register(handler, id);

最佳答案

这很可能是 DNS 配置错误。 Java 同时使用 DNS 和反向 DNS。在查找对方时,确保两者在客户端和服务器主机上都正常工作。

关于Java RMI - 从 Ubuntu 到 OSX 的远程调用超慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12886039/

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