У меня есть сервер на базе Netty 4.1.Я позаботился о том, чтобы он был хорошим гражданином HTTP / 2.Часть этих усилий включает обработку как так называемых «предварительных знаний», так и сценариев «обновление с HTTP-1.1».
Я протестировал свое приложение, используя curl --http2
(который при необходимости выполнит обновление) и curl --http2-prior-knowledge
.Он хорошо работает в обоих случаях и делает то, что я ожидал.
Недавно я обнаружил vegeta
, отличный инструмент для тестирования под нагрузкой.У него есть опция -h2c
, которая, я полагаю, делает то, что делает curl --http2-prior-knowledge
(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 и поэтому, вероятно, использует библиотеку Go h2c
. curl
использует nghttp
. Если я правильно обрабатываю запрос curl
HTTP / 2 через предварительные знания, но vegeta
имеет проблемы с нимчто это значит?