相关疑难解决方法(0)

如何在Linux中禁用Nagle的算法?

有办法通过命令行吗?man tcp告诉我,我需要设置tcp_nodelay = 1,但我无法在/ proc/sys/net/ipv4下创建tcp_nodelay文件.如果有任何方法可以在Linux中禁用Nagle,请告诉我.

linux nagle

10
推荐指数
1
解决办法
4万
查看次数

无法关闭TCP_NODELAY

我正在使用Boost asio发送TCP消息.我设置了NO_DELAY选项,因为这是一个"实时"控制系统.我看到使用Wireshark在消息中设置了PSH标志.我对性能表示满意,并且按预期工作.

为了兴趣,我决定关闭NO_DELAY并测量性能差异.

我交换了现有的代码:

m_tcpSocket.open(boost::asio::ip::tcp::v4());
boost::asio::ip::tcp::no_delay noDelayOption(true);
m_tcpSocket.set_option(noDelayOption);

// snip create endpoint
m_tcpSocket.connect(m_tcpServerEndpoint);

// snip build message
m_tcpSocket.send(boost::asio::buffer(pDataBuffer, size));
Run Code Online (Sandbox Code Playgroud)

对于

boost::asio::ip::tcp::no_delay noDelayOption(false);
m_tcpSocket.set_option(noDelayOption);
Run Code Online (Sandbox Code Playgroud)

我仍然看到PSH标志设置.

我也尝试删除set_option代码并仍然看到它设置.

在Wireshark中我看到:

104 - 105  SYN
105 - 104  SYN, ACK
104 - 105  ACK
104 - 105  PSH, ACK + my message
105 - 104  ACK
Run Code Online (Sandbox Code Playgroud)

其中104和105是我的2台PC的IP地址.我对使用我的数据的消息有ACK感到惊讶.

如何关闭NO_DELAY?

delay boost-asio nagle

1
推荐指数
1
解决办法
4779
查看次数

标签 统计

nagle ×2

boost-asio ×1

delay ×1

linux ×1