Интересно, является ли это преднамеренной частью теста ApacheBench: посмотреть, как ведет себя ваш сервер, когда к нему открывается соединение, но затем данные не отправляются.Предположительно, ApacheBench имеет открытый исходный код, поэтому вы можете посмотреть, вызывает ли он какое-то особое поведение (моя ставка на то, что он открывает сокет и затем не отправляет запрос) после 16400 попыток.
В любом случае выВозможно, вы захотите убедиться, что вы установили явное время ожидания для сокета, если ваша версия Java по умолчанию имеет значение 0 (= бесконечно).Не думайте, что каждый клиент будет вести себя отлично и всегда будет отправлять вам именно те данные, которые вы ожидаете.
Так что, как правило, вы должны быть уверены, что ваш веб-сервер не упадет, если "случается что-то необычное "- сети такие, и иногда пакеты / соединения теряются случайным образом, и вам нужно с этим справиться.Операционные системы вполне могут накладывать ограничения, например, на то, как долго может быть открыто соединение, и поэтому ваш сервер может внезапно увидеть «ковер, вырванный из-под ног» ОС.Я полагаю, что тест ApacheBench может имитировать несколько подобных гремлинов (что может быть даже тем, что вы видите в Ubuntu, хотя зависание readLine (), вероятно, является имитацией не отправки запроса на открытое соединение, как я упоминал).