2009-05-09 4 views
1

У меня есть код база с большим количеством этого:Правило большого пальца для объема памяти использования, которое требуется, чтобы сделать рабочий процесс переработкой?

byte[] contents = FileUtils.FileToByteArray(FileOfGartantuanProportions); 

Я не контролирую свой сервер IIS, так что я не могу видеть системный журнал или делать приборы, я просто получить, чтобы увидеть мою просьбу (белая страница смерти), а иногда и YSOD с ошибкой Out of Memory.

У кого-нибудь есть эмпирическое правило, каково максимальное количество данных, которые вы можете загрузить в память до того, как IIS5 или IIS6 убьют рабочий процесс или просто перевернутся и умрут?

Или еще лучше, есть ли API вызов я делаю, что-то вроде:

if(!IsEnoughMemoryFor(FileOfGartantuanProportion.Length)) throw new SomeException() ; 

На моем XP Pro станции я могу получить получить страницу ASP.NET, чтобы успешно справиться с очень большим массивом байт в памяти, но эти результаты, очевидно, не применимы к реальному общему серверу.

ответ

1

Согласно разговору Tess Ferrandez на TechEd, вы можете начать просматривать исключения из памяти на 32-битном сервере, если у вас около 800 МБ в частных байтах или 1,4 ГБ в виртуальных байтах.

Она также имела хороший пост о том, почему это здесь:

A restaurant analogy

Другая она сделала включена думающей о том, что вы serialising в сессию - например serialising в 1Мб набора данных может привести к 15-20 МБ памяти, используемой на сервере на каждой странице, поскольку эти данные будут сериализованы и де-сериализованы.

1

С помощью IIS6 в основном режиме вы можете настроить лимиты для каждого пула приложений.

С IIS5 он сконфигурирован с использованием элемента в machine.config в процентах от общей системной памяти - по умолчанию 60%.

1

Для IIS 6 вы, вероятно, столкнетесь с memory recycling limits PeriodicRestartPrivateMemory и PeriodicRestartMemory. Я думаю, что XP, это 60% физической памяти. По крайней мере, это то, что я помню о asp.net 1.1, я не уверен в 2.0

YSOD, вероятно, лучше всего обрабатывать с помощью try/catch вокруг больших распределений.