Приложение ASP.net 3.5 периодически вызывает исключение OutOfMemory при чтении текстового файла размером 16 МБ в Windows Server 2003 / IIS 6

У меня есть приложение ASP.net 3.5, работающее на Windows Server 2003 и IIS 6.0, которое, когда мой код читает файл размером 16 МБ, иногда вызывает исключение OutOfMemory. Обычно, если вы пытаетесь выполнить то же самое чтение снова, я продолжаю получать исключение.

Если я перезапущу w3svc, то исключение исчезнет. Кроме того, он обычно исчезает, если я оставляю его в покое на несколько часов и пытаюсь запустить код позже.

Исключение составляет обращение к ReadToEnd в потоке файлов, поэтому в моем коде нет утечки памяти.

Процесс w3wp.exe на моем сайте обычно использует около 250-350 МБ памяти при нормальной загрузке.

Я бы предположил, что что-то об использовании памяти на соединение или что-то вызывает эту проблему, хотя я недостаточно знаю об управлении памятью IIS / ASP.net, чтобы знать, где искать способ отследить это или настроить его не вызывает проблемы.

У меня почти всегда есть 2+ ГБ свободной оперативной памяти на этом сервере, и я никогда не ниже 1,5 ГБ свободной.

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

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

Есть ли какое-то ограничение на подключение IIS или веб-сайт ASP.net, на которое я берусь, и если да, есть ли способ увеличить ограничение, если я знаю, что у меня много свободной оперативной памяти?

0 ответов

Другие вопросы по тегам