Я перенес одно приложение ASP.NET v4.0 на новый сервер под управлением операционной системы Win2008 Server x64. Поскольку с перенесенным приложением asp.net проблем не возникло, когда для пула приложений было установлено «Включить 32-разрядные приложения» = False (должно быть по умолчанию в x64 IIS), я оставил его работающим в 64-разрядном режиме.
Затем выяснилось, что пользовательские сеансы прерываются очень часто, потому что рабочий процесс довольно быстро выходит за пределы своей виртуальной памяти. По этой причине я протестировал одно и то же приложение и тот же пул приложений только с одним измененным параметром - я переключил «Включить 32-битные приложения» в значение «Истина», чтобы оно работало в режиме «WOW64»; все остальное осталось как было. Я сравнил объем памяти, потребляемый рабочим процессом в обоих режимах, используя абсолютно одинаковый сценарий работы пользователя, и результат меня немного шокировал:
- рабочая нагрузка потребляет ок. 150 МБ при работе в 32-разрядном режиме WOW64
- и идентичная рабочая нагрузка занимает около 800 МБ в режиме 64-разрядного рабочего процесса «по умолчанию».
Я ожидал, что в 64-битном режиме рабочий процесс может потреблять немного больше памяти, но эта разница слишком велика.
Считается ли такой огромный эффект памяти нормальным? Можно ли как-то уменьшить / исправить?