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

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

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

14.12.2008 09:43:58
2 ОТВЕТА
РЕШЕНИЕ

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

1
14.12.2008 10:02:36
Мы управляем сессией вне процесса, поэтому доступ к памяти 4x4 ГБ очень сильно нам поможет и, скорее всего, не потребует никаких изменений архитектуры приложения. Спасибо
nick_alot 14.12.2008 10:11:02

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

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

0
19.12.2008 19:21:25