Проблема
Я хочу отслеживать использование пула потоков из определенного планировщика (
Код: Выделить всё
BoundedElasticScheduler). Я хочу посмотреть, подходит ли емкость пула потоков или она довольно часто достигает своего предела, и есть ли много ожидающих задач.
Вопрос
Я думаю, что [b]МАКСИМАЛЬНОЕ[/b] использование пула потоков является одним из наиболее важных показателей. Есть ли метрика, которую я еще не нашел, которую можно было бы для этого использовать? Или кто-нибудь подскажет мне, как наблюдать за использованием потоков в пуле и самостоятельно реализовать метрику?
Пока пробовал
[list]
[*]Используя встроенные метрики реакторов
[/list]
В реакторе
3.4.x я нашел метрику executor.active, но это показатель, и в инструментах мониторинга он опрашивается в интервал (например, каждую минуту), это слишком неточно для коротких задач, которые длятся в пуле всего несколько миллисекунд. В реакторе 3.5 я нашел максимальное время выполнения, но не максимальное количество активных потоков. Документация в настоящее время сильно обновлена из-за версии 3.5, поэтому, возможно, я пропустил метрику, которую можно было бы использовать для того, что мне нужно.
- Использование специальной реализации для отслеживания использования
Я также пытался реализовать DistributedSummary вокруг планировщика, поэтому я могу отслеживать
MAX запланированных задач за интервал времени (поскольку DistributedSummary использует TimeWindowMax, который показывает
MAX для каждого интервала мониторинга). Но он будет отслеживать только само планирование, а не реальное использование потоков, например, если у вас есть Mono, который оценивает некоторые Mono и Flux внутри, который также будет использовать потоки из пула. Поэтому он не показывает мне рабочую нагрузку пула.
Подробнее здесь:
https://stackoverflow.com/questions/744 ... micrometer