вторник, 19 ноября 2013 г.

Exchange 2013: работа служб Store, FAST, и ESE Cache

После того как я получил много отзывов на свой пост «Exchange 2013 Mail flow Demystified» я решил похожим же образом осветить работу таких компонентов как Store, FAST, и ESE Cache. В Exchange 2013 многое изменилось в работе хранилища (store). Я надеюсь, что смогу пролить свет на эти изменения. Давайте начнем прежде всего с работы хранилища, т.к. это является основой вашей почты.
В Exchange 2013 Store.exe (который не менялся с Exchange 4.0) получил столь необходимые, капитальные изменения, и был полностью переписан в управляемом коде C#. Процесс store.exe теперь разбит на 2 процесса: Microsoft.Exchange.Store.Service.exe и Microsoft.Exchange.Store.Worker.exe. Процесс Store.Service отвечает за управление и завершение всех процессов Store.Worker. Каждая база данных на сервере почтовых ящиков имеет собственный процесс Store.Worker независимо от того активная это или пассивная копия базы данных. На изображении ниже Вы можете видеть оба процесса, и как база данных WorkerProcessID (PID) коррелирует с процессом Store.Worker. Разделение работы хранилища на несколько процессов сводит к минимуму шансы обрушить весь store.exe и остановить все базы данных на сервере.

clip_image002

Каждый, кто работал с Exchange 2010 и старше знает, что процесс Store.exe забирает большинство памяти сервера (75-90%). Это штатное поведение (by design). ESE (store.exe) высвободит памяти, если она понадобится другим процессам. Вы также можете установить ключ реестра msExchESEParamCacheSizeMax и указать максимальный объем памяти, который ESE может потреблять на этом сервере. Эта конструкция отлично подходит для Exchange 2010 и предыдущих версий. Но в Ezxchange Exchange 2013 архитектура сильно изменилась.
В связи с тем, что Exchange 2013 требуется больше памяти для других процессов, таких как Поиск (FAST) и Транспорта (Transport), мы должны были ограничить объем оперативной памяти, который использовал ESE. Теперь, в Exchange 2013, ESE (Store) будет использовать 25% от общего объема оперативной памяти. Так что если ваш сервер имеет 48 Гб памяти ESE будет использовать 12 Гб для кэша. Эти 12GB будут использоваться для поддержания работы всех баз данных. Прежде чем вдаваться в точное описание скажу, что ESE будет использовать около 80% от 12 ГБ для активных копий и 20% для пассивных копий баз данных. Достаточно просто не так ли? Но не все так просто! Проблема может возникнуть, если вы неправильно установите MaximumActiveDatabases на сервере почтовых ящиков (Set-Mailbox -MaximumActiveDatabases). Давайте рассмотрим два примера, и вы увидите, что я имею ввиду.

Пример 1 – На нашем MBX сервере установлено 48 GB памяти и располагается 8 баз данных (4 активные и 4 пассивные). В этом примере мы не устанавливали значение параметра MaximumActiveDatabases на сервере MBX. В таком случае, Вы можете наблюдать, что из выделенных 12GB для ESE, используется только 7.2GB.

Общий объем RAM = 48GB
48GB*25%=12GB выделено для кэша ESE
4 активные копии на сервере
4 пассивные копии на сервере (потенциально они могут стать активными)
12GB/(4+4) = 1.5GB
Кэш активных БД = 1.5GB
Кэш пассивных БД =1.5GB*0.20 = 0.3GB
Макс. Объем для активных и пассивных БД = 12GB (25% RAM)
Использование кэша = (4*1.5GB + 4* 0.3GB = 7.2GB)


Пример 2 - Наш MBX сервер имеет те же 48 ГБ памяти и по-прежнему насчитывается 8 баз данных (4 активных и 4 пассивных). На этот раз мы устанавливаем значение параметра MaximumActiveDatabase на сервере MBX равное 4. Теперь вы можете видеть, что в типичном сценарии мы используем 12 ГБ (100%) из выделенных кэшу.

Общий объем RAM = 48GB
MaximumActiveDatabases = 4
48GB*25%=12GB выделено для кэша ESE
4 активные копии на сервере
4 пассивные копии на сервере (они не смогут стать активными т.к. максимальное значение 4)
12GB/(4+4*.20) = 2.5GB
Кэш активных БД = 2.5GB
Кэш пассивных БД =2.5GB*0.20 = 0.5GB
Макс. Объем для активных и пассивных БД = 12GB (25% RAM)
Использование кэша = (4*2.5GB + 4* 0.5GB = 12GB)


Вы наглядно убедились в том, как установка значения MaximumActiveDatabase оказывает влияние на Вашу среду. Если стандартный пользователь использует 5 МБ кэша ESE, то разница составляет примерно в 204 (плюс/минус) почтовых ящика, в активной базе данных. Правильная настройка = Оптимальная производительность!

В заключение, я хочу рассказать о новой поисковой платформе, которую использует Exchange - FAST. Многие уже знакомы с системой быстрого поиска FAST, поскольку она используется в SharePoint. Я не буду углубляться в детали, а сосредоточусь на описании процессов и требованиях к памяти на MBX сервере. Сервис Microsoft Exchange Search запускает процесс, который называется hostcontrollerservice.exe. Host Controller, в свою очередь, запускает 4 процесса под названием noderunner.exe. Вы можете увидеть их ниже, на снимке экрана. Каждый из этих процессов отвечает за свою часть поисковой инфраструктуры – Контент, Запросы, Индексы и Администрирование (Content, Query, Index, and Admin). Обратите внимание на то, что эти процессы занимают значительный объем памяти. Лучшей практикой является выделение 15%, от общего объема памяти, на все процессы Поисковой Инфраструктуры (Search Infrastructure). В приведенных выше примерах это означало бы, что для поиска нужно использовать 7.2GB.

clip_image004

Автор статьи: Richard Schwendiman

Оригинал статьи на англ. языке находится по следующей ссылке: - http://blogs.technet.com/b/rischwen/archive/2013/07/29/exchange-2013-store-fast-and-ese-cache-demystified-hopefully.aspx

Перевел статью:
Даньшин Михаил Сергеевич
Блог – http://danshin.ms
Facebook - https://www.facebook.com/Danshin.ms
E-Mail: - mdanshin@gmail.com


1 комментарий:

  1. Добрый день!

    1. Небольшое замечание - для включения нужно использовать коммандлет вида Set-MailboxServer -MaximumActiveDatabases (в тексте статьи, Set-Mailbox -MaximumActiveDatabases, в том числе в англоязычном оригинале).
    2. В Exchange 2010 такой параметр в свойствах сервера с ролью почтовых БД тоже есть. Вопрос: насколько он сказывается на производительности в случае трех ролей на одном сервере?

    ОтветитьУдалить