Apache HttpClient случайные задержки при высоких запросах в секунду - PullRequest
4 голосов
/ 23 апреля 2011

Я использую Apache HttpClient для запроса HTTP / 1.0 (без поддержки) сервера на локальном хосте со скоростью около 20 запросов POST / секунду.У меня включен TCP_NODELAY следующим образом:


val httpParams = new BasicHttpParams()
HttpConnectionParams.setTcpNoDelay(httpParams, true)
val client = new DefaultHttpClient(connectionManager, httpParams)

Несмотря на это, несколько раз в минуту я вижу случайную задержку в 10-200 миллисекунд для отправки такого запроса (измерение на сервере показывает, что задержка в отправке).Я проверил, что это не пауза сборщика мусора.В чем может быть проблема?

Я пытался запросить сервер с клиентом C ++ с той же скоростью, и он не имеет таких случайных задержек, поэтому я думаю, что это проблема HttpClient.

Обновление: Я проверил реализацию HttpClient причала, и у него та же проблема.Может ли это быть проблемой JVM во FreeBSD?Я должен проверить это на Linux, но у меня под рукой нет сервера Linux.

1 Ответ

2 голосов
/ 06 мая 2011

У меня та же проблема с использованием Windows. В моем случае HttpClient вводил задержку около 1 секунды, но только при первой попытке выполнить сообщение (я делаю несколько по порядку). Я пробую обходной путь, который должен был создать "поддельную" почту на локальный хост и выполнить ее (и за исключением IOException). Благодаря этому моя задержка при вызове реальных сервисов была уменьшена с 1 секунды до 100 мс. Я не мог улучшить больше, чем это пока.

...