1

我有一个基于 Netty 4.1 的服务器。我非常注意让它成为一个行为端正的 HTTP/2 公民。这项工作的一部分涉及处理所谓的“先验知识”和从 HTTP-1.1 升级的场景。

我已经使用curl --http2(必要时会进行升级)和curl --http2-prior-knowledge. 它在两种情况下都反应良好,并且符合我的预期。

最近,我发现vegeta了一个很棒的小负载测试工具。它有一个-h2c选项,我相信它会做什么curl --http2-prior-knowledge(没有 TLS 的 HTTP/2 并且没有做“请从 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's HTTP/2-via-prior-knowledge 请求但vegeta遇到问题,这是什么意思?

4

0 回答 0