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

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

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

Ответы [ 2 ]

1 голос
/ 14 декабря 2008

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

0 голосов
/ 19 декабря 2008

Ответ на вопрос «каждый рабочий процесс имеет доступ к 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

...