…некоторые из нас озадачены вопросам; поставили Exchange Server 2010 а он всю память на сервере скушал, что делать?.
Дело в том что в Exchange 2010 используется динамическое распределение памяти, которая и забирает всю память под себя и это нормальное поведение, так и должно быть!
Основная причина такого “поведения” заключается в оптимизации производительности дисковой подсистемы, память выделяется под кеш базы данных, тем самым I/O дисковой подсистемы меньше за счет информации в памяти.
Таблица значений размеров кэша базы данных по умолчанию для Exchange 2010
Физическая память на сервере (ОЗУ)
|
Размер кэша базы данных (только Mailbox)
|
Размер кэша базы данных (с несколькими ролями)
|
2GB
|
512 MB
|
Not supported
|
4GB
|
1 GB
|
Not supported
|
8GB
|
3.6 GB
|
2 GB
|
16GB
|
10.4 GB
|
8 GB
|
24GB
|
17.6 GB
|
14 GB
|
32GB
|
24.4 GB
|
20 GB
|
48GB
|
39.2 GB
|
32 GB
|
64GB
|
53.6 GB
|
44 GB
|
96GB
|
82.4 GB
|
68 GB
|
128GB
|
111.2 GB
|
92 GB
|
Подробно смотрим тут Understanding the Mailbox Database Cache
Так что делать если вам действительно необходимо ограничить размер памяти выделяемой под кэш? Это может быть необходимо в тех случаях когда на сервере помимо роли Exchange крутится еще и другие сервисы (что к стати не рекомендуется) или в тестовых средах это необходимо, или вы просто любите держать все под контролем!
Так вот возвращаясь к ограничению используемой памяти, нам нужно отредактировать параметр в AD, в этом нам поможет Adsiedit.msc но перед тем как отредактировать нам нужно знать точно значение указываемое в параметре.
Так, например если вы хотите ограничить кэш базы данных на Exchange 2010 сервере до 4 Гб, нужно установить значение для msExchESEparamCacheSizeMax в размере 131072 (4 Гб в килобайтах у нас 4.194.304 Кб делим на 32 Кб, получаем 131072) где 32Кб это у нас значение Page Size которое как мы знаем разработчиками Exchange 2010 было увеличено до 32Кб. (см. заметку ниже)
Соответственно если вам нужно выделить 8Гб, то в килобайтах это у нас 8.388.608 Кб / 32 Кб и получаем 262144.
Теперь когда мы знаем точное значение которое нам нужно, запускаем ADSIEdit.msc
1. Переход в Configuration > Services > Microsoft Exchange > ‘Название Организации’ > Administrative Groups > Exchange Administrative Group (FYDIBOHF23SPDLT) > Servers > ‘Имя сервере’ > InformationStore
2. Правой кнопкой мыши на InformationStore и редактируем msExchESEParamCacheSizeMax. Установите значение на количество Page Size необходимым вам, установленное значение и будет максимальным размером кэша базы данных.

3. Перезагрузите сервис Microsoft Exchange Information Store, чтобы изменения вступили в силу.
Вот теперь Exchange будет съедать только столько памяти сколько вы ему выделили!
Заметка про Exchange 2007,
В нем также используется динамическое распределение памяти, только значение Page Size в Exchange 2007 равно 8Кб, соответственно пересчёт идет на 8. Пример если вы хотите ограничить кэша базы данных на Exchange 2007 сервере до 2ГБ, установить msExchESEparamCacheSizeMax на 262144 (2 Гб = 2.097.152 KB / 8 КБ).
Обратите внимание, что Exchange 2007 работает с 8Кб Page Size а Exchange 2010 с 32 Кб Page Size! Прирост и оптимизация… Подробно про Exchange 2010 смотрим тут New Exchange Core Store Functionality
Вот на этом пока все,
Arman Obosyan
http://postmaster.ge/blog