Сбой Asp.net в mscorlib - PullRequest
       11

Сбой Asp.net в mscorlib

0 голосов
/ 24 июня 2009

Это связано с другим моим вопросом

После устранения очевидного (или так я думал) и самого большого потребителя памяти (изображений в кэше asp.net), мало что изменилось. В этой сети мы используем обработку исключений Enterprise Library (не знаю почему, но мы это делаем), и эти исключения не регистрируются. Для справки, сервер имеет 4 ГБ памяти, поэтому я не думаю, что проблема заключается в физической памяти.

Вот что происходит, согласно журналу событий:

Сначала я получаю это со страницы (редко с одной и той же страницы дважды):

Exception information: 
Exception type: Exception 
Exception message: mscorlib - Exception of type 'System.OutOfMemoryException' was thrown. 

Тогда это:

Description:
An unhandled exception occurred and the process was terminated.
Application ID: /LM/W3SVC/672222825/Root
Process ID: 1544
Exception: System.OutOfMemoryException
Message: Exception of type 'System.OutOfMemoryException' was thrown.
StackTrace:    at System.Threading.ExecutionContext.CreateCopy()
  at System.Threading._TimerCallback.PerformTimerCallback(Object state)

У меня такой вопрос: как мне использовать профилировщик, чтобы увидеть, что вызывает сбой? Я пробовал два профилировщика - .net профилировщик памяти и dotTrace от JetBrains. Профилирование памяти на самом деле не дает мне ничего полезного, кроме того, что у меня много строк. Профилирование производительности также не помогает, потому что время выполнения функций все в порядке. Если эта ошибка возникает во время работы профилировщика, он просто прекращает профилирование - возможно, я его неправильно использую.

p.s. Извините за форму, сделал все, что мог.

Ответы [ 3 ]

1 голос
/ 26 июня 2009

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

Единственное, что меня озадачивает, это то, что он должен так безобразно падать, а не выкидывать YouIdiotYoureOverUsingSessionObjectException:)

Хорошо, живи и учись ...

0 голосов
/ 24 июня 2009

Существует атрибут ограничения памяти раздела ProcessModel в machine.config, который управляет максимальным использованием памяти ASP.NET перед переработкой.

0 голосов
/ 24 июня 2009

Я бы проверил, что вы вызываете Dispose для IDisposable реализаций. Довольно хороший способ проверить это - запустить код через FXCop.

...