Как определить, страдает ли основное приложение asp.net от истощения пула потоков - PullRequest
0 голосов
/ 08 июня 2019

Сегодня у нас были странные проблемы в API, вызванные голоданием пула потоков. Нам потребовалось много времени, чтобы понять это.

Так что я думаю, как бы это измерить? Я знаю, что могу использовать такие инструменты, как perfview, но эти ошибки, как правило, возникают только в prod, поэтому сложно выполнить тест perf для анализа после факта.

Я знаю о звонках, таких как: ThreadPool.GetAvailableThreads(out workers, out ports); Однако результат, который я получаю, - это произвольно большое число, например 32766. На самом деле (как мы узнали) проблема обычно не в максимальном размере потока, а в том, что .Net ограничивает количество новых потоки это будет раскручиваться в секунду. Итак, что я заинтересован в измерении:
- Сколько рабочих потоков использует мое приложение прямо сейчас?
- Сколько времени в среднем было потрачено на ожидание доступной нити в последнюю секунду?

Я надеюсь, что есть какой-нибудь API-интерфейс Threadpool или API другого типа, где я могу получить «живые» метрики для них, чтобы я мог сообщить об этом нашим системам мониторинга, использующим Prometheus или аналогичный.

Это просто выстрел в темноте, любые указатели оценены!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...