Почему мой сервер на базе Netty по-разному реагирует на скручивание запросов HTTP / 2 предыдущих знаний и запросов vegeta -h2c? - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть сервер на базе 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 имеет проблемы с нимчто это значит?

...