3

我正在通过环回接口测量 Windows 上 TCP/IP 连接的延迟,并且从发送消息到收到响应的时间大约为 4 毫秒。

对于 RPC 目的,在 TCP/IP 之上有一个TCF层。除了 TCF 帧之外,发送和接收的消息仅包含一个字符作为有效负载。

处理命令的“服务器”是在 C++ 中使用 boost asio 实现的。“客户端”发送命令是一个使用 Python TCF 参考实现的 Python 脚本。

我尝试将套接字选项设置为 TCP_NODELAY 以禁用 Nagle 算法,并尝试了套接字的各种缓冲区大小,但往返时间保持在 4 毫秒左右。我原以为它会低很多。

C++ 端的分析表明它花费了大约 50% 的执行时间等待命令,因此下一步将尝试用 C++ 实现替换 python 脚本,但很高兴知道人们可以期待什么环回接口上的往返时间。

这个 SO,问题:
启用 TCP_NODELAY 的 Linux Loopback performance 是相关的,但并没有完全回答我的问题。

4

1 回答 1

6

您可以使用 建立延迟的下限ping localhost。它报告的数字是发送一个数据包,接收一个数据包。

如果您的 TCP 消息是在现有连接上发送的,那么您可能会得到几乎那个延迟。

如果您测量的时间包括 TCP 连接设置,您可能会得到 10 倍的延迟。

于 2012-07-03T13:51:05.073 回答