Closed ei-grad closed 7 years ago
В стандарте как раз таки "close" и не сказано про иные варианты этого заголовка.
"Connection options are case-insensitive."
По сути предложения то как, keep-alive или не keep-alive в GET частях?
Теперь значения Connection: close|keep-alive
В патронах установлено значение
Close
, первая буква - заглавная. По стандарту* значение этого заголовка должно обрабатываться как case-insensitive, но некоторые реализации http-серверов (например, fasthttp на go) реагируют только на значение равноеclose
, где все буквы маленькие.Эта ситуация приводит к неочевидным различиям в поведении реализаций сервиса при тестировании. Например, если сервис игнорирует значение этого заголовка на фазах с GET запросами, то он получает преимущество за счет расхождения его поведения со спецификацией HTTP/1.1, так как yandex-tank не проверяет значение заголовка Connection в отправляемых запросах, и не контроллирует закрытие соединения сервером. А на фазах POST из за особенностей yandex-tank соединение необходимо закрывать после каждого запроса, в противном случае он не корректно обрабатывает ответ сервиса, и участники соревнования видят в результатах обстрела ошибку "Response is empty".
Возможно, во второй фазе стоит заменить
Close
наclose
, а в первой и третьей - заголовок Connection убрать.[*] https://tools.ietf.org/html/rfc7230#section-6.1