Назад | Перейти на главную страницу

Приложение 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 ГБ.

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

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

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