我正在学习 SCADA 系统 TANGO-Controls。称为 DeviceServer 的基本组件在启动时通过 CORBA 向数据库服务器请求配置。
我的 TestDeviceServer 在 Windows 10 上运行,有两个网卡,一张用于具有自动 DHCP 配置的大学网络,另一张用于具有多个静态 IP 地址的测试网络。数据库服务器在 VirtualBox 6.1 Ubuntu 20.04 VM 中运行。 VM 通过网桥连接到两个网络。 DevServer 应通过测试网卡访问数据库服务器。在我的例子中,有一个特殊的环境变量:
TANGO_HOST=192.168.50.13:10000
,带有虚拟机的本地 IP。
我的问题是,使用的 IP 地址越多,与数据库服务器的连接建立速度就会大大减慢,即大约每个 IP 地址 6 秒。 如果我断开 NIC1 的连接并只留下一个 IP 地址用于连接到 VM,则连接会立即建立。
我想知道该行为的发生是由于 CORBA 特性还是由于网络配置。我已按 IP4 指标优先考虑静态测试 NIC,但没有成功。停用 Windows 防火墙也没有帮助。
当数据库服务器在真实的 Ubuntu 22.04 PC 上运行时,会发生相同的行为。
该问题与 CORBA 无关。 我们发现问题在于 TANGO 解析主机名的方式,请参阅这里。延迟来自 Windows API
INT WSAAPI getnameinfo()
。
我们找到了一个简单的解决方案:在 NIC IP4 设置中启用 LMHOST 查找,并在 主机文件(
…\windows\system32\drivers\etc\hosts\
):
例如
192.168.50.222 our.pc.de
192.168.2.222 our.pc.de
重新启动网卡。