gpt4 book ai didi

performance - Tomcat 似乎只向套接字发送 64k,然后在发送下一个 64k 数据 block 之前等待确认

转载 作者:行者123 更新时间:2023-11-28 23:35:16 24 4
gpt4 key购买 nike

在传输大文件时,我们观察到 tomcat 的以下行为。服务器发送 64k 的 tcp 数据,最大段大小(mss=1469,所以 44*1460 字节,加上 1*1296 字节)没有任何延迟。所以服务器端的 Nagle 没有问题。当发送最后一个数据包时,它设置了 Push 标志,这向我表明发送缓冲区已清空。

然后在收到来自客户端的最终 ACK 之前有 200 毫秒的不必要延迟。显然这是因为客户端使用了 tcp delayed ack(我无法影响的行为)并且我们的段数不相等。

根据我的理解,如果 tomcat 会连续发送数据,我们将避免在每 64k 的 tcp 数据之后有 200 毫秒的延迟。

问题:

  1. tomcat 仅发送 64k,然后在发送更多数据之前等待最后的确认是否符合预期?

  2. 是否有任何方法可以调整 tomcat 的行为以使其更连续地发送数据(无需在每 64k 数据 block 后耗尽发送缓冲区)?

最佳答案

Is it expected behavior for tomcat to send just 64k, then wait for the final ack before sending more data?

没有。 Tomcat 或任何其他 Java 应用程序都不能“等待最终 ACK”。你根本看不到它们。 Tomcat 只是写入套接字输出流。

Is there any means to tune the tomcat behavior to have it sending data more continously (without draining the sendbuffer after each 64k chunk of data)?

这首先不是 Tomcat 的行为。这种行为几乎可以肯定是由于 TCP。

关于performance - Tomcat 似乎只向套接字发送 64k,然后在发送下一个 64k 数据 block 之前等待确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25255139/

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