Переполнение стека где-то в IIS7 C # ASP.NET веб-приложение

#c# #asp.net-mvc-3 #iis-7 #stack-overflow

#c# #asp.net-mvc-3 #iis-7 #переполнение стека

Вопрос:

Рабочий процесс моего веб-сайта IIS7 (w3wp.exe ) перезапускается каждые пару минут из-за исключения переполнения стека, которое происходит где-то в средне-большом приложении.

Средство просмотра событий не предоставляет никаких подробностей о том, где в коде возникает ошибка.

 Application: w3wp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to stack overflow.
  

В средстве просмотра событий нет трассировки стека, с помощью которой можно было бы найти, где находится ошибка. В коде нет конкретных рекурсивных функций (afaik), вероятно, существуют косвенные рекурсии, например, A, вызывающий B, вызывающий C, вызывающий A.

Как мне продолжить поиск неисправного кода? Я не могу отлаживать с помощью Visual Studio, потому что это происходит только на рабочем сервере с сотнями пользователей, обращающихся к веб-сайту.

Комментарии:

1. Общим источником исключений переполнения стека являются свойства. Например. средство получения возвращает свойство getter вместо базовой переменной.

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

3. Я бы тоже предположил, что я просто указал на это как комментарий к вашему замечанию об отсутствии рекурсивных функций.

4. НЕ ИСПОЛЬЗУЙТЕ УДАЛЕННЫЙ ОТЛАДЧИК. Установите VisualStudio. удаленный отладчик потратил неделю моего времени из-за плохого дизайна. Например, у вас должен быть пользователь с одинаковым именем пользователя / паролем на обеих машинах для отладки, которая нигде не документирована должным образом.

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

Ответ №1:

Отладчик Visual Studio поймает это.

Комментарии:

1. Это происходит только в рабочей среде, когда сотни пользователей заходят на веб-сайт.

2. Вы можете подключиться к процессу с помощью удаленного отладчика ?

3. Для этого потребуется установить Visual Studio на рабочий сервер Win2008.

4. Исходя из того, что вы получаете переполнение стека каждые 2 минуты, убивая рабочий процесс iis, я бы сказал, что отладка на реальном сервере — это наименьшая из ваших забот. Вы будете делать это всего пару минут, пока не будет сгенерировано исключение, а затем вы сможете отключить. Я не могу представить, что это вызовет у пользователей больше сбоев, чем они получают сейчас, когда iis WP перезапускается каждые пару минут.

5. @Liam для использования удаленного отладчика вам просто нужен удаленный отладчик на сервере, а не Visual Studio, удаленный отладчик — это крошечное приложение .net, которое не требует установки. Однако вам потребуется какое-либо VPN или другое сетевое подключение от вас к ПК к серверу.

Ответ №2:

Звучит как работа для windbg . Используйте adplus для получения аварийного дампа: