套接字通信的响应时间不一致

套接字通信的响应时间不一致

我有一个测试设置,其中包含两个相同类型的定制设备:以太网交换机和工业 PC。交换机是 Moxa EDS 405,PC 是一台相对低配置的机器,配有 Atom 1.46 GHz CPU、4 Gb RAM 和 Intel I210 以太网控制器。

这些设备支持通过套接字传输数据。它们旨在通过交换机连接到 PC,并从 PC 上运行的应用程序进行轮询。该应用程序使用 .Net 方法套接字.发送套接字。接收用于与设备之间传输数据。

我注意到,当应用程序轮询两个设备和仅轮询一个设备时,响应时间存在奇怪的不一致。基本上,当我将一个设备连接到 PC 时,发送和接收数据的平均时间跨度(执行套接字.发送套接字。接收方法)大约为 1.2 秒。但是当我连接两个设备时,任一设备的这个时间都会增加到 11.1 秒。

在使用两台设备时,发送/接收操作持续时间为何会如此快速增加?是否由于 PC 规格的限制,导致它无法足够快地处理来自两台设备的入站数据流?

更新: 该应用程序向设备发送两种请求。第一种类型的请求只是一个文本命令“状态”,只是一个字符串。收到命令后,设备会发回两个字节的数据,代表其内部状态。这个过程需要 1.2 秒或 11.1 秒,具体取决于连接的设备数量。当使用两个设备时,应用程序使用两个单独的线程与每个设备通信,并大约每 10 分钟发送一次状态命令。每个线程的时间表彼此不同步,并且可以根据操作条件由应用程序本身稍微更改。第二种请求是数据请求。应用程序发送“GetFile”命令并收到大约 37 千字节的数据。这种情况每 1 小时发生一次。我没有跟踪这个过程的持续时间,但它花费的时间不到 100 秒,因为我将套接字超时设置为 100 秒,并且它从未导致应用程序出现异常。

更新: 下面的链接是阐明我的连接方案的图表。左侧情况是两个设备连接并且应用程序轮询它们。在这种情况下,套接字发送和接收时间为 11.1 秒。右侧情况只有一个设备,此处对应的时间为 1.2 秒。

连接图:

在此处输入图片描述

相关内容