为什么我的基于Netty的服务器对CurlHTTP/2先验知识请求和vegeta-h2c请求的响应会有所不同?
我有一个基于Netty 4.1的服务器。我非常小心地让它成为一个行为良好的HTTP/2公民。这项工作的一部分涉及处理所谓的“先验知识”和从HTTP-1.1升级的场景 我已经使用为什么我的基于Netty的服务器对CurlHTTP/2先验知识请求和vegeta-h2c请求的响应会有所不同?,curl,netty,vegeta,Curl,Netty,Vegeta,我有一个基于Netty 4.1的服务器。我非常小心地让它成为一个行为良好的HTTP/2公民。这项工作的一部分涉及处理所谓的“先验知识”和从HTTP-1.1升级的场景 我已经使用curl--http2(必要时将进行升级)和curl--http2先验知识测试了我的应用程序。在这两种情况下,它的响应都很好,并且达到了我所期望的效果 最近,我发现了一个很棒的小负载测试工具。它有一个-h2c选项,我相信它可以做curl--http2先验知识所做的事情(HTTP/2没有TLS,也没有执行“请从HTTP 1.
curl--http2
(必要时将进行升级)和curl--http2先验知识测试了我的应用程序。在这两种情况下,它的响应都很好,并且达到了我所期望的效果
最近,我发现了一个很棒的小负载测试工具。它有一个-h2c
选项,我相信它可以做curl--http2先验知识所做的事情(HTTP/2没有TLS,也没有执行“请从HTTP 1.1升级我”的操作)
然而,当我使用vegeta-attack
和-h2c
选项攻击我的服务器时,即使只使用一个请求(通过-rate=1/2s-duration=2s
),vegeta
挂起,无法读取正文:
Error Set:
net/http: request canceled (Client.Timeout exceeded while reading body)
据我所知,vegeta
是用Go编写的,因此可能使用Goh2c
库。curl
使用nghttp
。如果我正确处理curl
的HTTP/2-via-previous-knowledge请求,但vegeta
有问题,这意味着什么