На прошлой неделе у меня были проблемы, когда одно из моих веб-приложений, запущенных на IIS, зависало в случайное время, по крайней мере, один раз в день, мне нужно переработать пул приложений, чтобы вернуть его к жизни. ЦП и память вроде нормальные.
Когда я смотрю на активные потоки в разделе рабочих процессов в диспетчере IIS, я вижу, как потоки накапливаются, как будто они застряли, когда он зависает, там около 25+ потоков, при работе нормально 3-6 в любой момент .
Я предполагаю, что это могло быть связано с изменением кода в моем веб-приложении на C #, но я не могу понять, где / что это, было всего несколько незначительных изменений, сделанных из того, что я могу вспомнить.
На прошлой неделе я действительно очень старался диагностировать с помощью нескольких инструментов, таких как WinDbg и dotTrace, чтобы увидеть, смогу ли я отследить что-нибудь очевидное, но на данный момент я немного не в себе.
Я вижу, что есть много потоков с ошибками тайм-аута, подключающихся к моей базе данных NoSql (RavenDb), однако я думаю, что это отвлекающий маневр и связано с тем, что потоки блокируются в IIS, поскольку я могу подключиться к той же базе данных из другого приложения IIS просто отлично, а также использовать инструменты управления базой данных для управления / запроса базы данных.
У меня есть мини-дампы и снимки dotTrace, с которыми можно поиграть.
Вот результаты "~ * e! Clrstack" на WinDbg: https://gist.github.com/phinett/7901d82fa526696d3c92
Любая помощь / идеи о том, что мне следует искать, чтобы найти виновника? При необходимости я с радостью предоставлю доступ к минидампам.
Спасибо!
Вероятно, намного проще и быстрее начать с DebugDiag v2 update 1 и принудительно создать дамп процесса, а затем запустить анализ зависаний.