2013-03-15 59 views
0

我在Linux平台上使用阻止BOOST ASIO套接字。 在某些read()操作中,我看到500+ ms的巨大延迟。 (主要是等待时间是好的,但一个脱如此巨大的延迟是不能接受的)使用Boost :: Asio套接字看到500ms在读

使用选项

_socket->set_option(tcp::no_delay(true)); 

我试图在互联网上搜索我已经禁用Nagle算法,它似乎还有其他的像Delayed Ack和PUSH标志可以确保延迟消失。

我正在使用Linux,PUSH标志设置可能在Linux中不可用。 不确定BOOST上的延迟确认设置。 (我应该使用从升压插口提取的原生套接字描述符?)

关闭这个问题,延迟来自接收端。 在客户端和服务器之间实现的底层协议是这样的:接收者不会给发送者发送更多数据包的标志。 TCP层面没有任何内容。应用程序级别的实现不好。

+3

真正的问题是你用这个插座连接了什么?挂断是在连接的另一端,而不是你的。 – 2013-03-15 13:57:02

+2

你是如何测量这种延迟?它来自哪里? – 2013-03-15 14:01:44

+1

您是否禁用了_sending_端的Nagle算法?它对接收方没有影响。你确定发送方确实发送了数据吗? – 2013-03-15 14:49:11

回答

0

延迟来自接收端。在客户端和服务器之间实现的底层协议是这样的:接收者不会给发送者发送更多分组的标志。 TCP层面没有任何内容。应用程序级别的实现不好。 关闭这个问题。

相关问题