Объясните удивительное количество таймеров и выясните их происхождение - PullRequest
0 голосов
/ 13 февраля 2020

У меня где-то есть утечка процессора, и я пытаюсь выяснить источник (ОЗУ тоже увеличивается, но не так быстро).

Я собрал некоторые данные через dotnet-counters и обнаружил, что количество таймеров в данном процессе постоянно увеличивается. Например, когда использовалось 46% ЦП, оно сообщало о 450 таймерах (см. Следующие данные). Обратите внимание, что это число только увеличивается, медленно, но верно, как использование моего процессора. И также обратите внимание, что это в значительной степени в то время, когда он простаивал, не имея клиентов в сети.

enter image description here

Это приводит к 2 вопросам:

1) Это нормально? Должен ли я продолжить этот трек? Я нахожу странным иметь такое количество таймеров.

2) В своем собственном коде я никогда не использую класс Timer, я использую класс Stopwatch один раз, но это все.

Так что будет лучший способ найти класс / библиотеку, которая использует эти таймеры?

1 Ответ

0 голосов
/ 20 февраля 2020

1) Было действительно что-то подозрительное, и это определенно не нормально.

У меня был класс, порождающий сотни потоков и поддерживающий их для прослушивания входящих вызовов.

Короче говоря То, что многие таймеры не являются чем-то нормальным.

2) Таймер шел откуда-то глубоко в библиотеке. Я не смог найти простой способ их найти.

Лучший вариант - использовать do tnet -trace collect. https://www.speedscope.app/ мне очень помогли, и можно генерировать кривые для спидоскопа непосредственно из do tnet -trace.

...