Доступная память IIS6 для 32-разрядного приложения с Web Garden в ОС x64 (32 ГБ ОЗУ)

У нас есть IIS6, работающий на 64-битном сервере Windows 2003 с 32 ГБ физической памяти. Из-за некоторых более старых 32-разрядных зависимостей в нашем приложении .NET 3.5 ASP.NET мы в настоящее время вынуждены запускать рабочий процесс IIS в 32-разрядном режиме wow64, который, как я понимаю, дает нам доступ к 4 Гб памяти для нашего рабочего процесса.

Мой вопрос: если мы используем настройку Web Garden и настроим, скажем, 4 рабочих процесса, может ли каждый рабочий процесс получить доступ к 4 Гб памяти каждый, что даст нам доступ примерно к 16 Гб памяти. Или мы застряли с лимитом 4 Гб для нашего приложения ASP.NET?


person nick_alot    schedule 14.12.2008    source источник


Ответы (2)


Да, ограничение 4 ГБ на процесс. Каждый 32-битный процесс, работающий в 64-битном ядре, имеет ограничение частного адресного пространства 4 ГБ (которое, кстати, не используется ядром, как в 32-битной системе). Вы можете получить доступ к 4x4 ГБ = 16 ГБ памяти, однако эти 16 ГБ не доступны одновременно для одного процесса. Каждый из них может напрямую обращаться только к своей частной памяти объемом 4 ГБ. Вы должны использовать некоторую среду межпроцессного взаимодействия для доступа к памяти из других процессов.

person mmx    schedule 14.12.2008
comment
Мы управляем сеансом вне процесса, поэтому доступ к 4x4 ГБ памяти нам очень поможет и, вероятно, не потребует каких-либо изменений архитектуры приложения. Спасибо - person nick_alot; 14.12.2008

Ответ на вопрос «каждый рабочий процесс имеет доступ к 4 Гб памяти каждый» был дан выше - по умолчанию у вас будет 2 ГБ ОЗУ в пользовательском режиме, если вы не используете переключатель / 3 ГБ, который вы можете или не сможете использовать в зависимости от требований. настройки вашего приложения / сервера. Вы можете закончить голодание ресурсов режима ядра.

Вторая часть вашего вопроса, «что дает нам доступ примерно к 16 ГБ памяти», зависит от того, что вы подразумеваете под «доступом». Веб-сады работают, раскручивая еще один файл w3wp.exe для входящих запросов, пока вы не достигнете количества рабочих процессов, настроенных для пула приложений. Поскольку каждый экземпляр веб-сада находится в своем собственном процессе, это как если бы это был другой пул приложений, и в результате они не использовали одно и то же адресное пространство. Итак, хотя ваше приложение потребляет больше памяти, это происходит только потому, что вы запускаете несколько экземпляров одного и того же приложения, каждый из которых ограничен 32-битными ограничениями. http://bytes.com/groups/asp/54826-asp-sessions-web-gardens http://msdn.microsoft.com/en-us/library/ms791558.aspx

person Community    schedule 19.12.2008