Как найти узкое место в IO bound операциях c# dotnet 6

Три сервиса на c# dotnet 6 взаимодействуют друг с другом: сервисы AssetManagement и Candles - это web api, сервис TerminalGateway это прокси для сервиса AssetManagement. Сервисы между собой общаются по http отправляя get/post запросы через HttpClient полученный через IHttpClientFactory.Create(). Для замера производительности эти сервисы развернуты в azure k8s. На 150 RPS появляются лаги между отправкой запроса на стороне клиента и началом обработки запроса на стороне сервера.

Ресурсы CPU и NETWORK не используются на 100%, потоки IO операций тоже не используются на 100% (писал в лог результаты ThreadPool.GetAvailableThreads)

Я понимаю что есть IO операции связанные с диском, выводом в консоль, сетевым взаимодействием между моими сервисами, elasticSearch, jaeger и другими. Как понять что является узким местом? На что обратить внимание?

Скрин из Jaegerвведите сюда описание изображения


Ответы (0 шт):