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層面沒有任何內容。應用程序級別的實現不好。
真正的問題是你用這個插座連接了什麼?掛斷是在連接的另一端,而不是你的。 – 2013-03-15 13:57:02
你是如何測量這種延遲?它來自哪裏? – 2013-03-15 14:01:44
您是否禁用了_sending_端的Nagle算法?它對接收方沒有影響。你確定發送方確實發送了數據嗎? – 2013-03-15 14:49:11