Влияние большого числа элементов и ограниченных представлений на производительность

 

Последнее изменение раздела: 2009-01-14

В этом разделе приведены сведения, помогающие диагностировать и устранять проблемы с производительностью сервера Microsoft Exchange Server 2007, связанные с большим числом элементов в важнейших папках и запросами ограниченных представлений при использовании Microsoft Office Outlook в интерактивном режиме, Outlook в кэшированном режиме с делегированным доступом и веб-клиента Outlook. Важнейшими папками являются папки "Календарь", "Контакты", "Входящие" и "Отправленные". Ограниченные представления — это представления данных, в которых сведения ограничены на основе условий поиска, что приводит к тому, что в папке отображается только подмножество элементов. Проблемы с производительностью, вызванные этими ситуациями, часто взаимосвязаны и ощущаются пользователями как замедление клиентского доступа. Для возникновения проблем с производительностью, затрагивающих всю организацию Exchange, достаточно, чтобы число элементов в важнейших папках нескольких пользователей было значительно выше нормы.

В случае сервера Exchange Server 2003 рекомендуется, чтобы количество элементов в папке не превышало 5000. В Exchange Server 2007 усовершенствования операций ввода и вывода, увеличение размера страниц и кэш-памяти позволяют увеличить рекомендованное максимальное количество элементов. При правильном подборе оборудования приемлемое взаимодействие с пользователем может обеспечиваться при количестве элементов, достигающем 20 000.

noteПримечание.
Приемлемое взаимодействие с пользователем для общих операций подразумевает выполнение действия в ответ на щелчок мыши в течение 100 мс. Для редко используемых операций, таких как создание нового порядка сортировки или выбор папки в первый раз, допустимым является время не более минуты.

Это рекомендуемое максимальное значение зависит от того, используются ли почтовые ящики пользователей какими-либо программами сторонних производителей. К этим программам относятся следующие программы и их аналоги:

  • надстройки Outlook;

  • программы архивации электронной почты;

  • антивирусы;

  • мобильные устройства;

  • голосовая почта;

  • прочие программы или надстройки Outlook, создающие дополнительные представления или папки поиска.

В этом случае количество элементов должно быть определено путем проверки общей загрузки сервера и анализа обработки сервером каждого запроса от конкретной сторонней программы.

Это рекомендуемое максимальное значение также зависит от производительности среды Exchange. В некоторых конфигурациях оборудования максимальные значения могут быть меньшими. Лучше всего, чтобы в каждой из папок "Входящие" и "Отправленные" хранилось до 20 000 элементов, а в каждой из папок "Контакты" и "Календарь" — не более 5000 элементов. Даже если количество элементов меньше максимальных значений, для выполнения некоторых операций может потребоваться значительное время (обычно около минуты). В число этих операций входят изменение порядка сортировки и выбор папок в первый раз. При первом просмотре папки создание представления может занять даже больше времени. Большое число элементов в важнейших папках негативно влияет на производительность сервера, так как они являются наиболее часто используемыми папками почтового ящика. Другие папки, особенно настраиваемые папки, созданные пользователями, могут содержать большее число элементов, не ухудшая работу, так как они используются реже. Имейте в виду, что хотя наличие большого числа элементов в редко используемых папках оказывает меньшее влияние на производительность, при увеличении числа таких папок и количества активных пользователей на сервере могут возникать временные проблемы с производительностью.

importantВажно!
При первом просмотре папки создание представления может занять даже больше времени. Поэтому операции перемещения папок будут приводить к падению производительности при первом просмотре папок с большим количеством элементов. Это может приводить к возникновению временных проблем с производительностью, когда пользователи, перемещенные на новые серверы, подключаются к своим папкам и снова создают представления папок. Ниже приведены рекомендации по перемещению почтовых ящиков путем распределения переносов между несколькими серверами, а также за счет сокращения количества почтовых ящиков, одновременно перемещаемых на одни и те же серверы. Эти рекомендации могут свести остроту данной проблемы к минимуму.

При определении подходящего максимального количества элементов для организации следует понимать, что падение производительности не происходит скачкообразно по достижении максимального значения; оно происходит постепенно. Указанные пределы не заданы жестко. Эти значения основаны на тестировании и анализе кода. При увеличении количества элементов производительность может упасть настолько, что это станет заметно пользователю. Максимальное количество элементов для среды определяется приемлемым для пользователей уровнем производительности.

Важно понимать, что размер отдельных почтовых ящиков в принципе не ограничен. Основными факторами, ограничивающими размер почтового ящика, являются доступное место на диске, время резервного копирования и восстановления, соглашения об уровне обслуживания и производительность Microsoft Office Outlook. Под производительностью Outlook понимаются задержки, воспринимаемые пользователями.

Влияние оборудования на производительность

Хотя это должно быть очевидно, не лишним будет повторить, что если оборудование организации недостаточно мощное, производительность может быть низкой при меньшем числе элементов. В интерактивном режиме требования к операциям ввода и вывода в системе растут при увеличении числа элементов в почтовых ящиках. При оценке производительности оборудования при наличии большого числа элементов важно учитывать задержки дисков. Чтобы пользователям было удобно работать, задержки должны быть небольшими (не более 20 мс) даже в периоды максимальной нагрузки на сервер.

Чтобы понять, как сумма задержке дисков влияет на производительность сервера, рассмотрите следующий пример. При запросе представления запрос данных выполняется в виде отдельных серийных запросов к диску, а не в виде групповых операций. Например, если подключаемый модулю возвращает представление, содержащее 1000 элементов, хранилище Exchange, вероятно, выполнит около 200 отдельных запросов данных (предполагается, что за один запрос можно получить 5 сообщений). При задержке 20 мс задержка, вызванная дисковой подсистемой, составит не менее 4 с. Подумайте, насколько возрастет влияние на производительность, если задержка диска увеличится до 50 или 100 мс. Эта проблема обостряется еще сильнее, если для выполнения аналогичных запросов используется несколько подключаемых модулей. В такой ситуации Outlook будет часто невозможно использовать.

Дополнительные требования о рекомендациях к оборудованию сервера, которое обеспечит хорошую производительность для Exchange Server 2007, см. в разделе Планирование архитектуры сервера и хранилища.

Причины, по которым может требоваться дополнительное время на обработку

При рассмотрении влияния большого числа элементов и запросов ограниченных представлений на производительность обработки сервера необходимо понимать происходящие при обработке процессы и их связь с большим числом элементов и запросами ограниченных представлений.

Содержимое папки хранится в таблице в базе данных банка данных. При увеличении числа элементов растет сложность хранилища. Механизм хранения для хранилища Exchange называется подсистемой ESE. В подсистеме ESE для хранения записей используются структуры данных дерева B+. При увеличении числа записей также растет потенциальное число запросов ввода-вывода для диска, которое требуется для поиска данных и просмотра дерева B+. Дополнительные сведения см. в разделе Архитектура расширенного обработчика хранилищ (ESE).

При увеличении числа элементов возможность того, что запрошенные данные находятся в физически смежных областях жесткого диска, существенно уменьшается. Поэтому требуется больше запросов ввода-вывода.

Для создания ограниченных представлений требуется больше обработки на сервере Exchange.

Существует два способа фильтрации сообщений в MAPI.

  • Папки поиска

Папка поиска представляет собой обычную папку MAPI. Однако вместо сообщений в папке поиска содержатся только ссылки на сообщения в других папках. Эти сообщения удовлетворяют заданному ограничению.

  • Ограничения

    Для создания ограничения необходимо вызвать метод IMAPITable::Restrict в таблице MAPI. В результирующей таблице отображаются только элементы, удовлетворяющие заданному ограничению. В таблице с ограниченным содержимым отображаются только сообщения из одной папки. Этот тип ограничения иногда можно перепутать со структурой, заданной MAPI, которая описывает критерии фильтрации для папки поиска. Такой тип структур, заданных MAPI, также известен как ограничение.

Для папок поиска и ограничений требуется дополнительная обработка. Например, сюда относится создание папки поиска и ее заполнение элементами, соответствующими условиям пользователя. В рамках этого процесса необходимо проанализировать каждый элемент в папке, чтобы определить, необходимо ли помещать его в папку поиска. Поэтому если папка содержит много элементов, для создания представления требуется больше времени. Папки поиска хранятся с меткой SearchFID в каждой папке, в которой выполнялся поиск. По умолчанию заполненная папка поиска может существовать до 40 дней.

Наличие ограниченных представлений влияет на то, как быстро можно изменять элементы в папке. Если с папкой сопоставлена папка поиска, для добавления, удаления или обновления элементов требуется дополнительная обработка. Это происходит потому, что Exchange необходимо определить, требуется ли обновлять папку поиска. При создании большого количества папок поиска каждое изменение требуется оценить для всех таких папок, чтобы определить, требуется ли их обновление.

При добавлении нестандартных свойств в представление папок в Outlook могут потребоваться дополнительные вызовы удаленных процедур для получения нестандартных свойств из хранилища Exchange. Если папка содержит много элементов, для получения данных с сервера Exchange требуется больше круговых путей.

При попытке просмотра папки календаря Outlook требуется найти все встречи в указанном диапазоне дат. Для этого требуется по крайней мере два запроса на обработку. Первый запрос получает все статические встречи в указанном диапазоне дат. Второй запрос находит повторяющиеся встречи в указанном диапазоне дат. Время, необходимое для обработки второго запроса, пропорционально зависит от числа элементов в папке календаря. Это вызвано тем, что Outlook запрашивает все повторяющиеся встречи. После получения списка повторяющихся встреч необходимо проанализировать каждую из них, чтобы определить, назначена ли она на указанный диапазон дат. Если папка календаря содержит много элементов, для обработки таких запросов требуется больше времени.

Влияние на производительность большого числа элементов и размера почтового ящика

Важно понимать, что большинство проблем с производительностью возникают не из-за большого размера почтового ящика (под большим понимается размер более 2 ГБ), а из-за количества элементов в папке или папках на сервере, к которым осуществляется доступ. Слишком большое число элементов в папке негативно влияет на производительность, так как операции в таких папках занимают больше времени. На производительность особенно влияет число элементов в важнейших папках — "Календарь", "Контакты", "Входящие" и "Отправленные". Дополнительные сведения о планировании почтовых ящиков большого размера см. на странице White Paper: Planning for Large Mailboxes with Exchange 2007 (на английском языке).

К операциям, которые зависят от числа элементов в папке, относятся добавление столбца в представление, сортировка по новому столбцу, а также поиск. Многие подключаемые модули Outlook выполняют сортировку или поиск, и также запросы могут пересекаться с другими запросами Outlook MAPI. Это ухудшает работу пользователей.

В кэшированном режиме (который используется по умолчанию в Outlook 2003 и более поздних версиях) при увеличении числа элементов в папках могут возникать проблемы с производительностью клиентов. Прежде всего, необходимо не допускать фрагментации OST-файлов (локального кэша данных). Для этого можно использовать средство Windows SysInternals под названием Contig. Последнюю версию средства Contig можно загрузить на странице Contig v1.55.

Кроме числа элементов в важнейших папках, на работу Outlook влияют другие факторы, например число приложений MAPI или подключаемых модулей Outlook, которые выполняются на компьютере пользователя. Для всех запросов MAPI требуется время на обработку библиотекой emsmdb32.dll. Если большое число подключаемых модулей делают запросы, работа Outlook может замедляться, а влияние на сервер — увеличиваться. Кроме того, определенное влияние оказывает сложность запрошенного действия. Например, пометка всех элементов в папке как прочтенных займет намного больше времени, чем пометка одного элемента. К другим действиям, которые могут занимать длительное время, относятся получение сведений о доступности большого числа пользователей для приглашения на собрание или выполнение поиска по нескольким папкам. Если пользователи часто выполняют сложные действия, имеют много подключаемых модулей Outlook или интенсивно используют папки "Контакты" и "Календарь", вероятность снижения производительности из-за большого числа элементов значительно возрастает.

Ограниченные представления (ограничения MAPI)

MAPI обычно представляет данные в виде таблицы. Существует таблица, которая предоставляется клиенту при запросе списка поставщиков, таблица для папок, содержимого папок, вложений и т.‎ д. Каждая таблица состоит из нескольких столбцов. Каждый столбец является отдельным свойством MAPI, которое представляет такие атрибуты, как отправитель, тема и время доставки. Каждая строка представляет определенный элемент. В таблице содержимого папки каждая строка представляет сообщение. Действия клиентов в таблицах представлены в виде операций, таких как сортировка данных. Клиент может выполнять в таблице поиск определенной строки, соответствующей заданным условиям. Такая операция называется FindRow(). Клиент может также запросить, чтобы в таблицу включались только элементы, соответствующие определенным условиям. Например, можно включить только элементы, созданные в определенный день. Такой процесс называется ограничением. В итоговой таблице содержимого папке будут только те элементы таблицы, которые соответствуют заданным условиям. Ограничения используются в том случае, когда ожидается, что клиент будет часто запрашивать одно и то же представление данных.

Влияние ограниченных представлений на производительность

Чтобы понять воздействие ограничений на производительность, необходимо учитывать, что банк данных хранит данные, запрашиваемые MAPI-клиентами, а также знать, как он интерпретирует такие запросы, как FindRow и Restrict. Схема хранилища состоит из различных таблиц, которые в совокупности представляют такие объекты, как почтовые ящики, папки, содержимое папок и сообщения.

Когда клиент запрашивает список содержимого папки, запрос сопоставляется со специальной папкой, которая называется таблицей папок с сообщениями (MsgFolder). Для каждой папки, созданной в системе, существует отдельная таблица папок с сообщениями. Задачей таблицы MsgFolder является сопоставление папки и его содержимого.

Так как при вызове Restrict ожидается, что одни и те же данные будут часто запрашиваться повторно, создается специальная папка с именем Restricted Search Folder, а также соответствующая таблица MsgFolder. Эта папка связана с исходной папкой, и между ними существует логическая взаимосвязь. К папке поиска применяется условие, благодаря которому она включает только элементы, соответствующие условиям, которые задаются ограничением. В этой папке поиска существует обратная связь с исходной строкой в таблице MsgFolder для каждого сообщения в таблице MsgFolder, соответствующего условиям ограничения.

Проблема с производительностью, которая возникает в такой ситуации, связана со временем, необходимым для управления обновлением каждой из папок поиска. При изменении исходной папки изменение сравнивается с каждой из связанных с ней ограниченных папок поиска, чтобы определить, требуется ли их обновлять. При наличии большого числа папок поиска для одной или нескольких папок влияние этого процесса увеличивается. Вторая проблема связана с созданием ограниченных папок поиска. Для создания ограниченной папки поиска требуется полный обход исходной папки, при котором извлекаются отдельные элементы, которые требуется связать с ограниченной папкой поиска. Если этот процесс вызван непосредственно действием клиента, может возникнуть задержка, которая приведет к зависанию или выводу всплывающего окна Outlook RPC с сообщением о том, что обработка запроса занимает долгое время. Время, необходимое для создания ограниченной папки поиска, пропорционально зависит от числа элементов в обычной папке. При увеличении числа элементов в папке значительно снижается вероятность того, что они будут находиться в смежных секторах диска. Это приводит к существенному росту количества операций случайного ввода-вывода с диском при выполнении запросов ограниченных представлений для папок с большим числом элементов. При увеличении количества запросов ограниченных представлений для папок с большим числом элементов повышенное влияние ввода и вывода на производительность будет ощущаться всеми пользователями, которые получают доступ к ресурсам на сервере.

В Exchange 2000 Server, Exchange Server 2003 и Exchange Server 2007 определено максимальное число ограниченных папок поиска для папки. По умолчанию максимальное число таких папок — 11, а продолжительность жизни папки поиска — 40 дней.

Ограниченные папки поиска обрабатываются по принципу "первым поступил — первым обслужен". Если с папкой уже сопоставлены 11 ограниченных папок поиска и выполняется новый запрос на ограничение, список папок поиска оценивается с помощью времени последнего использования ограничения. Это означает, что ограниченная папка поиска, которая не использовалась дольше всего, удаляется, чтобы позволить обработать новый запрос. Как указано выше, для этого требуется полный обход обычной таблицы MsgFolder. Если эта операция непосредственно вызвана клиентом, при создании таблицы и ее представлении клиенту может снижаться производительность. Возможно, что ежедневно или еженедельно будет требоваться более 12 ограниченных папок поиска. Это приводит к тому, что клиент выполняет запрос на ограничение, для которого нет соответствующей папки. В свою очередь это приводит к удалению и созданию папок с ограниченным поиском. Все такие запросы обрабатываются серийно. Это означает, что при значительном количестве пользователей, в папках которых находится очень большое число элементов, для которых регулярно запрашиваются ограниченные представления, может возникать очередь запросов. Это приведет к замедлению работы пользователей, которые получают доступ к данным почтовых ящиков, расположенных на сервере. Важно понимать, что это влияет не только на пользователей, которые получают доступ к своим почтовым ящикам. Так, работа пользователей на других серверах, которые получают доступ к данным календаря, хранящимся на сервере, также замедлится.

importantВажно!
Установка дополнительных языковых стандартов на клиентах может привести к созданию еще большего числа представлений для пользователей веб-клиента Outlook и программы Outlook, работающей в интерактивном режиме.

Ограниченные представления и общие календари

При просмотре папки "Календарь", "Контакты" и иных папок другого пользователя могут возникать задержки. После просмотра папки переключение между ней и другими папками выполняется относительно быстро. Но по прошествии некоторого времени доступ к папке замедляется. Эта задержка может быть особенно долгой, если число элементов в календаре больше 5000.

Когда Outlook получает доступ к данным другого пользователя, он применяет представление, которое предотвращает просмотр частных элементов.

При применении представления к папке в хранилище создаются папки поиска. После создания такой папки она кэшируется для последующего использования. Если пользователь пытается создать папку поиска, которая уже существует, используется кэшированная папка. Это обеспечивает в дальнейшем относительно быстрый просмотр.

По умолчанию Exchange не кэширует все папки поиска в течение бесконечного периода. Кэширование слишком большого числа папок поиска привело бы к задержкам на сервере, связанным с обновлением папок поиска. С другой стороны, если не кэшировано достаточное число папок поиска, будет возникать аналогичная проблема, так как требуется создавать и обновлять папки поиска.

Чтобы проиллюстрировать эту проблему, рассмотрим сценарий, в котором на сервере Exchange настроено хранение 11 папок поиска (представлений) на каждую папку. Предположим, что у Андрея есть папка календаря, к которой он предоставляет доступ 15 другим пользователям. Когда Надежда получает доступ к этой папке, возникает задержка во время создания папки поиска. После ее создания доступ выполняется быстро. Затем Надежда не просматривает папку в течение дня, а 11 других пользователей получают к ней доступ. Для каждого из них создается новая папка поиска. Так как кэшируется только 11 папок поиска, при обращении к папке двенадцатого пользователя Exchange удаляет папку поиска, созданную для надежды. Поэтому при следующем обращении Надежды к папке ей потребуется дожидаться создания папки поиска.

Допустим, что вместо этого мы настраиваем сервер почтовых ящиков Андрея для кэширования 20 представлений. В таком случае Надежда и 14 других пользователей смогут обращаться к папке календаря Андрея, и при этом будет создано всего 15 папок поиска. Так как 15 меньше 20, никогда не будет требоваться удалять представление из цикла, поэтому после первоначального обращения, при котором создаются папки поиска, доступ для всех пользователей будет выполняться быстрее.

По умолчанию число кэшированных папок поиска равно 11, и это значение задано на уровне базы данных. Заданное значение можно просмотреть в редакторе ADSIEdit. Используйте редактор ADSIEdit для просмотра объекта хранилища, а затем проверьте значение атрибута msExchMaxCachedViews. Различающееся имя выглядит следующим образом:

CN=Database, CN=Storage Group,CN=InformationStore,CN=Server NAME,CN=Servers,CN=AG Name,CN=Administrative Groups,CN=Orgname,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=Contoso,DC=com.

В некоторых случаях полезно установить более высокое значение, чем 11, чтобы изменить влияние на производительность среды.

importantВажно!
Значение атрибута msExchMaxCachedViews никогда не должно превышать 50.
importantВажно!
Если в среде используется окончательная первоначальная версия (RTM) Outlook 2003, разверните пакет обновления 1 (SP1) или более позднюю версию, чтобы устранить известную проблему с низкой производительностью при работе с общими календарями.