evangel 发表于 2010-12-31 17:16:45

ACE+TAO 客户端连接阻塞的问题

服务器上存在多个IP地址,比如192.168.1.88、192.168.10.88。
客户端通过命名服务连接服务器端时,连接10.88很快,连接1.88却异常的慢。
命名服务命令行参数:Naming_Service.exe -m 0 -ORBListenEndpoints iiop://:9999

evangel 发表于 2011-1-5 10:10:03

我使用ACE自带的工具:tao_nslist 使用2台计算机进行测试
tao_nslist -ORBInitRef NameService=iioploc://192.168.1.88:9999/NameService很明显有20秒的延迟;
tao_nslist -ORBInitRef NameService=iioploc://192.168.10.88:9999/NameService马上就有输出结果。
2次输出的结果一样:
+ NotifyEventChannelFactory: Object Reference
|   Protocol: IIOP
|   Endpoint: 192.168.10.88:10000

codecola 发表于 2011-1-5 16:43:24

你的客户端192.168.10网段的吗?
跨网段的话,可能会慢

evangel 发表于 2011-1-6 09:04:30

回复 3# codecola

是跨网,有没有解决这个速度慢的办法呢?

winston 发表于 2011-1-6 22:03:53

我觉得可能与设备配置有点关系,不如你用普通的socket连接测试一下效果,查看一下问题出在什么地方。

evangel 发表于 2011-1-7 14:50:04

在Naming_Service.exe的启动参数中加入-ORBUseSharedProfile 1 -ORBNoServerSideNameLookups 1
Client连接时加入-ORBUseParallelConnects 1
可以解决连接延迟的问题。
但是又出现了新问题:
Client连接时有时候弹出一个未知异常CORBA::Exception:system exception,ID ‘IDL:omg.org/CORBA/TRANSIENT:1.0’ OMG minor code(2),described as‘*unknown description*’,completed = NO
奇怪的是不是每次连接都出,还未找到规律。

codecola 发表于 2011-1-7 16:53:32

打印客户端获取的服务器端的对象的IOR看看,是否IOR中存在多个host?
确保第一个host用的是ip,而不是主机名。
如果是主机名的话,配置客户端的/etc/hosts试试。
不行的话,在服务器端的程序代码中指定使用那个ip。
页: [1]
查看完整版本: ACE+TAO 客户端连接阻塞的问题