问题标签 [nagle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
978 浏览

php - TCP_NODELAY 与持久套接字?

似乎我可以使用 pfsockopen() 获得持久的套接字连接,或者使用 socket_connect() 获得正常的套接字连接,然后使用 socket_set_option() 设置 TCP_NODELAY。但是没有办法通过 TCP_NODELAY 获得持久的套接字连接。

有没有办法在 php 中获得与 TCP_NODELAY 的持久套接字连接?

0 投票
1 回答
3917 浏览

c++ - 禁用 nagles 算法会提高性能吗?

我目前有一个应用程序以非常高的速率接收实时消息,我的应用程序需要立即显示这些消息。我阅读了有关 nagles 算法的信息,我了解它将小消息组合成一个大消息然后传输它(它旨在通过在短时间内延迟 ACK 来减少确认数据包的数量)。我的问题是禁用 Nagles 算法帮助我的应用程序 ?我的所有消息将在收到后立即实时显示。对此问题的任何建议将不胜感激。

更新: 我也只能控制接收器,将禁用 nagles 算法。对接收方有任何影响,还是仅在对发送方禁用时才有影响?

0 投票
1 回答
55979 浏览

linux - 如何在 Linux 中禁用 Nagle 算法?

有没有办法通过命令行来做到这一点?man tcp 告诉我需要设置 tcp_nodelay=1,但是我无法在 /proc/sys/net/ipv4 下创建 tcp_nodelay 文件。请让我知道是否有任何方法可以在 Linux 中禁用 Nagle。

0 投票
0 回答
482 浏览

javascript - JavaScript | 如何在没有 node.js 的情况下禁用 nagle 算法

我正在尝试编写一个小型客户端服务器游戏。用 C++ 编写的服务器。js上的客户端。

用于使用 websocket 进行连接。因为高度依赖于延迟,我必须禁用 nagle 算法。

我知道在 node.js 中你可以使用他们的 setNoDelay() 函数来做到这一点。我需要在本机 javascript 中执行此操作。有谁知道如何做到这一点,有可能吗?

0 投票
2 回答
2286 浏览

sockets - Winsock 中是否有相当于 TCP_CORK 的功能?

在许多 UNIX TCP 实现中,TCP_CORK提供了一个套接字选项,它允许调用者绕过Nagle 算法并明确指定何时发送物理数据包。Windows(Winsock)中是否有等效功能?

TCP_CORK(自 Linux 2.2 起)

如果设置,则不发送部分帧。再次清除该选项时,将发送所有排队的部分帧。这对于在调用 sendfile(2) 之前添加标头或吞吐量优化很有用。按照目前的实施,TCP_CORK 对输出进行软木塞的时间有 200 毫秒的上限。如果达到此上限,则自动传输排队的数据。只有从 Linux 2.5.71 起,此选项才能与 TCP_NODELAY 结合使用。此选项不应在旨在可移植的代码中使用。

(我知道TCP_NODELAY,但这不是我需要的;我仍然希望在发送缓冲区中累积多个写入,然后在我准备好发送物理数据包时触发 TCP 堆栈。)

0 投票
1 回答
6249 浏览

linux - 在这个用例中,TCP_CORK 和 TCP_NODELAY 之间有什么显着区别吗?

在写了一个关于 TCP_NODELAY 和 TCP_CORK 的答案后,我意识到我对 TCP_CORK 更精细点的了解一定是缺乏的,因为我不是 100% 清楚为什么 Linux 开发人员认为有必要引入一个新的 TCP_CORK 标志,而不是仅仅依赖于应用程序在适当的时候设置或清除现有的 TCP_NODELAY 标志。

特别是,如果我有一个 Linux 应用程序想要通过 TCP 流发送()一些小的/不连续的数据片段而不支付 200 毫秒 Nagle 延迟税,同时最小化需要发送的数据包数量它,我可以通过以下两种方式之一:

使用 TCP_CORK(伪代码):

或使用 TCP_NODELAY(伪代码):

多年来,我一直在使用后一种技术并取得了不错的效果,而且它还具有可移植到非 Linux 操作系统的好处(尽管在 Linux 之外,您必须在关闭 Nagle 后再次调用 send() ,以便确保数据包立即发送并避免 Nagle 延迟——发送()'ing 零字节就足够了)。

现在 Linux 开发人员都是聪明人,所以我怀疑他们从来没有想到过 TCP_NODELAY 的上述用法。一定有他们觉得它不够的原因,这导致他们引入了一个新的/专有的 TCP_CORK 标志。任何人都可以解释那个原因是什么?

0 投票
2 回答
1047 浏览

c++ - 正确的 set_socket_init_handler 语法或修改源以使用 websocket++ 打开 TCP_NODELAY

我在实现示例代码以为 websocket++ 端点打开 TCP_NODELAY 时遇到问题。

这是一个客户端示例,这是一个服务器示例

示例按预期编译和工作,testee并且debug示例经常按预期编译和工作。

我尝试过on_socket_init两种方式都设置处理程序,但每次都得到几乎相同的错误。一组这样的错误是:

我看过另一个帖子,另一个开发人员声称它正在运行,因为我不完全理解这种语法

我不确定如何开始诊断这个问题。

如何解决上述错误?

注意我正在实施 TLS。

需要的代码

我最感兴趣的是合并这个函数的内容

有没有办法修改,以便默认进行此设置?

0 投票
1 回答
52 浏览

asp.net - Webjobs SDK Beta - 是否支持 Nagle?

Webjobs SDK 是否支持禁用 Nagle 算法?我在这里阅读了这篇文章http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx我想知道是否可以关闭此功能以提高小消息大小的性能?

0 投票
1 回答
190 浏览

algorithm - Nagle 算法是唯一具有相同用途的算法吗?

只是问,有谁知道 Nagle 算法是否是唯一用于数据包发送的算法?是否还有其他与 Nagle 相同的算法?如果没有,这些年来 Nagle 算法是否得到了改进?谢谢并向我发送资源将非常有帮助。

0 投票
0 回答
742 浏览

c# - 如何在 .NET 4.5 ClientWebSocket 中关闭 Nagle?

我想使用 .NET 4.5 ClientWebSocket ( http://msdn.microsoft.com/en-us/library/system.net.websockets.clientwebsocket%28v=vs.110%29.aspx ),但 Wireshark 透露,Nagle 的算法开启,很是头疼。谁能告诉我如何到达 ClientWebSocket 的 Socket.NoDelay 属性?即使是黑客也会受到赞赏......