JMeter, тест производительности Jetty и проблемы Keep-Alive - PullRequest
4 голосов
/ 01 ноября 2011

Хорошо, я создал очень простую WAR, которая обслуживает простой Hello World .jsp.Со всем HTML-кодом он составляет около 200 байт.

Развернул его на моем сервере с Jetty 7.5.x jdk 6u27 На моем клиентском компьютере создайте простой план тестирования JMeter с: группой потоков, HTTP-запросом, подтверждением ответа, клиентом сводных отчетов.работает jdk6u27

Я настроил группу потоков на 5 потоков, работающих на 60 сек, и получил 5800 запросов / сек. Затем я настроил 10 потоков и получил 6800 запросов / сек

В тот момент, когда я отключаю Keep-Жив в JMeter на сэмплере HTTP-запросов.Кажется, на стороне клиента я получаю много больших пауз, кажется, сервер ничего не получает.Я получаю меньше пауз в 5 потоках или почти ни одного, но в 10 потоках он зависает почти все время.

Что это значит точно?

Имейте в виду, что я технически создаю RESTсервис, и у меня возникла та же проблема, поэтому я подумал, что, возможно, я делал что-то необычное в своем сервисе, пока не понял, что это проблема Keep-Alive, так как она делает это в значительной степени в устаревшем веб-приложении.Так что на самом деле у меня будет 1 клиентский запрос 1 ответ сервера.Клиент не будет держать соединение открытым.

1 Ответ

4 голосов
/ 08 мая 2012

Я предполагаю, что поскольку Keep-Alive позволяет повторно использовать HTTP-соединение (и, следовательно, сокет), у вас заканчиваются доступные номера временных портов - существует только номера портов 64 КБ, и поскольку подключения должны иметь уникальный клиент / Комбинации портов сервера (и порт сервера фиксированный), вы можете быстро пройти через них. Теперь, если порты можно было повторно использовать, как только соединение было закрыто одной стороной, это не имело бы значения: однако, согласно спецификации TCP, обе стороны ДОЛЖНЫ ждать настраиваемое количество времени (по умолчанию: 2 минуты), пока повторное использование не будет считаться безопасным.

Для получения более подробной информации вы можете прочитать книгу по TCP (например, «Книга Стивенса»); выше упрощение.

...