Как настроить Apache http-клиент 4x PoolingHttpClientConnectionManager с Spring restTemplate? - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть одно приложение, предоставляющее сервис RESTful, которое сталкивается с проблемой производительности, когда TPS увеличивается с 5 TPS до 10 TPS, время отклика уменьшается на 95% с 500 ++ мс до 26 с.

Мое приложение - это веб-приложение, использующее java (7) + Spring (3.3x) + Apache HTTP-клиент (4.5.12) и развертывание на tomcat 7. Клиент отправляет JSON запрос через веб-слой используйте Apache веб-сервер в качестве обратного прокси-сервера для направления запроса к tomcat 7 (ajp) на той же машине.

Я имею в виду https://howtodoinjava.com/spring-boot2/resttemplate/resttemplate-httpclient-java-config/, чтобы использовать PoolingHttpClientConnectionManager для создания RestTemplate для запроса POST для другой внутренней службы.

Он отлично работает с 5 TPS и может видеть приложение, способное повторно использовать HTTP-соединение. но когда я увеличиваю трафик запроса c до 10 выше TPS, тогда приложение имеет низкую производительность, иногда даже получает время отклика 26 ++ с.

Пул соединений с http config, как показано ниже:

  DefaultMaxPerRoute = 200
  CONNECT_TIMEOUT = 30000
  SOCKET_TIMEOUT = 60000
  MAX_TOTAL_CONNECTIONS = 300
  DEFAULT_KEEP_ALIVE_TIME_MILLIS=20 * 1000
  CLOSE_IDLE_CONNECTION_WAIT_TIME_SECS =30

Существует один idleConnectionMonitor для проверки и закрытия соединения с истекшим / неактивным режимом каждые 20 секунд. Я не уверен, почему это так плохо, чем я ожидаю. Это выглядит как блокировка потока и ожидание чего-то, и я печатаю информацию пула через getTotalStats (), и HTTP-соединение не превышает максимальный итог. Tomcat 7 используется по умолчанию. например, максимальный пул потоков - 200. Нет опыта работы с настройкой обратного прокси Apache. Не знаю, проблема в настройках Apache web (обратный прокси) или Tomcat7 или на уровне моего приложения. Пожалуйста, сообщите об этом, и большое спасибо.

Кстати, используйте gatling 3x в качестве клиента тестирования нагрузки.

...