Я использую spring-cloud-netflix-zuul
для нашего шлюза для нескольких служб, когда я наблюдал за производительностью каждого приложения, использующего appdynamics
, я обнаружил, что запрос принимает 2 - 23 ms
на шлюзе и конкретной службе для обработки запроса, но от шлюз для обслуживания HTTP
занимает 250 - 500 ms
, поэтому просто интересно, почему это занимает много времени. Я просмотрел документ, найденный здесь , и увеличил максимальное количество подключений на хост и общее максимальное подключение, и я вижу, что мы используем SEMAPHORE
и результаты производительности были хорошими, он улучшился, но я
Шаги:
- Увеличено значение maxConnections
zuul.host.max-total-connections = 2000
- Увеличение maxConnections на хост
zuul.host.max-per-route-connections = 500
- с семафорами по умолчанию
- Увеличение семафоров - zuul.semaphore.maxSemaphores = 3000
Наблюдения:
- При увеличении общего количества подключений и макс. Числа подключенных узлов время HTTP уменьшается
- По умолчанию или увеличен или уменьшен до 1 семафор не увидел никакой разницы
Вопросы:
- Есть ли какая-либо очередь для проверки / отладки, когда максимальное число подключений на хост равно, скажем, 10, а шлюз получил 1000 запросов, где находятся эти 990 соединений?
- Когда увеличивать семафор, как это полезно?
- Как рассчитать количество подключений к хосту, чтобы задать максимальное количество подключений к хосту, а также общее максимальное количество подключений?
- Как проверить стратегию изоляции моего шлюза? Я вижу это как
"ribbonIsolationStrategy": "SEMAPHORE"
, но я не использую концепцию ленты / serviceId, я использую концепцию хоста, где я предоставляю всем zuul.routes
хост, путь, URL.