gpt4 book ai didi

java - Netty - 写入时缓冲响应

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:34 24 4
gpt4 key购买 nike

我在 Netty 上有一个应用程序,我将 tcpNoDelay 设置为 true(对于服务器和“子”套接字)。当我使用 -vN “curl”到我的服务器(N 禁用客户端缓冲区),然后缓慢地将数据写入 channel 时,没有任何内容传播到客户端,直到达到某个缓冲区限制,然后将其推送到客户端。我应该注意,我正在写回分块数据(因此客户端保持连接直到我们关闭它)。

我使用 Wireshark 来确保在达到缓冲区限制之前不会向客户端发送任何内容,然后我看到一堆 TCP 数据包涌向客户端。

理想情况下,这应该是顺利的。奇怪的是,我在本地计算机(Mac OS X Lion、Java 1.6.0_31)上运行的实例不会发生这种情况。仅在 Ubuntu、Java 1.6.0_20 服务器上出现。我无法想象从 _20 到 _31 的轻微版本不匹配是原因。

正在设置的服务器选项:

nioStreamBootstrap.setOption("child.tcpNoDelay", true);
nioStreamBootstrap.setOption("child.keepAlive", true);
nioStreamBootstrap.setOption("tcpNoDelay", true);

客户端“curl”:

curl -vN http://my.remote.server/some/path

我的日志显示正在对客户端 channel 进行的写入:

--- Message received from downstream
--- Writing message upstream
--- Message received from upstream
--- Writing message downstream

(请注意,“向下游写入消息”调用紧接在 channel.write(obj) 调用之前)

所以我不确定它是与操作系统相关、与Java相关还是与Netty相关。有建议吗?

最佳答案

似乎是 Ubuntu 服务器问题。无法在 CentOS 或 Mac OS X 上复制问题。

关于java - Netty - 写入时缓冲响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10238830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com