具有自定义TCP读取缓冲区的HTTP2客户端

具有自定义TCP读取缓冲区的HTTP2客户端,tcp,automated-tests,http2,Tcp,Automated Tests,Http2,我想要一个带有非常小的TCP套接字读取缓冲区的HTTP2客户端。系统中的其他套接字应保持默认设置(不能通过/proc/sys/net/ipv4/tcp\rmem调整全局tcp设置) 是否有一个实用程序(如curl)允许调整客户端的读取缓冲区 (大图:我正在测试一台服务器,我的主要目标是填充该服务器的tcp写入缓冲区。我的第一种方法是尝试创建一个具有非常小的读取缓冲区的客户端,以便服务器的缓冲区能够快速填充。任何其他方法都是受欢迎的…) 谢谢为了填充TCP服务器写入缓冲区,不需要调整客户端的低级T

我想要一个带有非常小的TCP套接字读取缓冲区的HTTP2客户端。系统中的其他套接字应保持默认设置(不能通过/proc/sys/net/ipv4/tcp\rmem调整全局tcp设置)

是否有一个实用程序(如curl)允许调整客户端的读取缓冲区

大图:我正在测试一台服务器,我的主要目标是填充该服务器的tcp写入缓冲区。我的第一种方法是尝试创建一个具有非常小的读取缓冲区的客户端,以便服务器的缓冲区能够快速填充。任何其他方法都是受欢迎的…)


谢谢

为了填充TCP服务器写入缓冲区,不需要调整客户端的低级TCP套接字读取缓冲区

您需要的是A)让客户端(在连接设置时)向服务器发送一个非常大的HTTP/2接收窗口,以便TCP流控制在HTTP/2流控制之前启动;和B)让服务器向客户端发送一个大的内容,并且让客户端不读取该内容(或者每N毫秒读取一个字节的速度非常慢)

步骤A)是基本步骤,否则默认的HTTP/2流控制窗口(仅65535字节)将在服务器TCP写入缓冲区填满之前(即使客户端未读取任何内容)暂停服务器下载

上述步骤可以使用任何可充分配置的HTTP/2客户端执行

免责声明,我是中HTTP/2的实现者,如果您使用Java,您可以使用Jetty HTTP/2客户机并遵循上述步骤。
可以看到Jetty的HTTP/2客户端的一个示例用法。

可以在客户端的源代码中为每个套接字设置套接字缓冲区-使用
setsockopt
SO_RCVBUF
@SteffenUllrich我正在寻找提供此功能的现有客户端,我尽量避免自己写这样一篇文章,感谢@sbordet指出必须增加HTTP/2窗口大小