Главная SharePoint, Без рубрики, Новое Обзор видов кэша в SharePoint Server (Часть 3)
  • Обзор видов кэша в SharePoint Server (Часть 3)

    icon150В предыдущих статьях данной серии мы говорили о существующих видах кэша SharePoint Server и способах их применения.  Данная часть посвещена только одному виду кэша – BLOB кэшу. Мы рассмотрим его настройку, а так же познакомимся с параметрами позволяющими производить тюнинг данного кэша, добиваясь более гибкого и производительного решения.

     

    Если вы решили включить кэширование двоичных объектов, то вам необходимо ответить на следующие вопросы:

    1. Как часто меняется контент? Если кэшированный контент часто читается и редко меняется, то в таком случае BLOB кэш будет наиболее эффективен. Примером хорошего кандидата на кэширование является логотип сайта, врятли он будет меняться часто. Плохим кандидатом для кэширование будут документы Word, особенно те с которыми происходят постоянные изменения.

    2. Насколько велик размер контента? BLOB кэш дает преимущества при работе с файлами разных размеров. Для больших файлов, BLOB кэш экономит полосу пропускания за счет минимизациии передаваемых данных между WFE и SQL, а так же уменьшает параметр «time to first byte» (TTFB). Для небольших файлов кэш говорит клиентскому приложению кэшировать файлы локально, что значительно снижается общее число запросов на SharePoint сервер.

    3. Доступен ли контент анонимно? BLOB кэш может обслуживать анонимные запросы без каких либо дополнительных обращений к SQL серверу, в то время как запросы с аутентификацией требуют обращения к SQL для проверки разрешений. Разрешение анонимного доступа может привести к существенному улучшению пропускной способности.

    4. Будут ли клиенты использовать HTTP range запросы? BLOB кэш может корректно обрабатывать HTTP range запросы, некоторые приложения такие как медиа плееры, просмотрщики PDF запрашивают только часть файла. (самый простой пример клиент открывший видео и переместивший ползунок сразу на середину ролика) Вы должны понимать, что до включения BLOB кэша SharePoint игнорирует подобные запросы и всегда возвращает файл целиком.

    5. Как много элементов будет кэшироваться? Использование памяти кэшем начинает увеличиваться в обьеме и расти при достижении полумиллиона файлов, в таком случае расход составит около 400 мегабайт оперативной памяти. В большиснтве сценариев вам не придется кэшировать такое колличество файлов, но если вам необходимо кэшировать несколько сотен тысяч файлов обязательно прочитайте абзац данной статьи о большом BLOB кэше.

     

    Включение Blob кэша

    BLOB кэш включается для каждого веб сайта Internet Information Services (IIS). Если веб-приложение было расширено более чем на одну зону, то веб сайтов IIS у вас будет несколько. BLOB кэш может быть включен и сконфигурирован независимо для каждой зоны на WFE сервере. Для включения данного кэша нужно выполнить следующие шаги:

    1. Отредактировать файл web.config для каждого сайта IIS

    2. Найти в XML блок с имененем BlobCache

    3. Найти атрибут “enabled” и перевести его в состояние “true”

    Хотелось бы заметить, что данные действия необходимо выполнить на каждом WFE сервере. Более подробная инсрукция по включению кэша доступна по ссылке.

     

    Настройка пула приложений

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

    BLOB кэш не поддерживает несколько процессов для одного пула приложений, которые так же извстны под именем веб-сады.  Когда веб-сад настроен, только первый процесс кэшируется в BLOB кэше, а остальные нет.

     

    Тюнинг BLOB кэша

    Для начала необходимо запланировать необходимый обьем дисков на WFE серверах, дабы при включении кэша было место для кэширования всего контента сайта. Диск должен выдавать  достаточно IOPs, но главное не рекомендуется использовать данный диск для других целей, напрмер для хранения поискового индекса.  Особое внимание следует уделить оперативной памяти WFE сервера, для этого не стоит забывать, что каждый кэшированный файл тратит 800 байт оперативной памяти. Этот факт следует учитывать при планировании оборудования для SharePoint серверов.

    BLOB кэш в большинстве случаев работает без какого либо тюнинга, но существует несколько настроек, таких как расположение файлов кэша, которые будут настраиваться в любом решении.  В таблице, которая приведена ниже перечислены XML аьрибуты, которые могут быть сконфигурированы в файле web.config для настройки BLOB кэша. Атрибуты поделены на 2 группы, первая это те атрибуты, которые настраиваются в большиснтве сценариев и вторая группа из атрибутов, изменение которых не следует делать без особой необходимости. Заметьте, что не все из нижеприведенных атрбутов прописаны в файле web.config по-умолчанию.

     

    Атрибуты, которые можно менять:

    param1

    Значения по-умолчанию параметра Path:

    \.(gif|jpg|jpeg|jpe|jfif|bmp|dib|tif|tiff|ico|png|wdp|hdp|css|js|asf|avi|flv|m4v|

    mov|mp3|mp4|mpeg|mpg|rm|rmvb|wma|wmv)$

     

    Атрибуты которые не следует менять (за исключением случаев очень большого BLOB кэша):

    param2

    Управление BLOB кэшем

    Для того, чтобы ваш кэш работал эффективно необходимо придерживаться нескольких рекомендаций:

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

        a. Изменение любых параметров библиотек может привести к аннулированию кэша всех файлов данной библиотеки. Примером может служить изменение описания библиотеки.

        b. Внесение изменений в настройки безопасности контейнера. Добавление пользователя или группы, изменение ACL, включение наследования разрешений, все это приведет к очистке кэша данного контейнера.

       c. Удаление файла, который не находится в кэше, но лежит в библиотекесодержащей кэшированные элементы вызовет сброс кэша для каждого файла в данной библиотеке.

     

    2. Для того, чтобы кэш работал корректно, не стоит пытаться работать с файлами кэша напрямую:

        a. Никогда не удаляйте вручную файлы из папки с кэшем.

        b. Никогда не открывайте и не изменяте файлы из папки с кэшем.

       c. Добавьте папку с кэшем в список исключений антивируса, так как антивирус может привести к блокировке и удалению файла.

     

    3. Windows имеет ограничение в длинне пути файла, который не должен быть длиннее 260 символов. По этой причине длинна URL SharePoint не должна превышать 160 символов, т.к на основе URL будет формироваться путь к файлу в папке хранящей кэш.

     

    Очистка Blob кэша

    Теперь давате поговорим о том, что делать если BLOB кэш всетаки посыпался. Ниже приведен ряд действий по возврату кэша в работоспособное состояние:

    1. Выполните перезапуск IIS (IISReset) на каждом WFE сервере, это приведет к сериализации и реинициализации индекса.

    2. Очистите кэш используя обьектную модель. В PowerShell для этого можно вызвать метод Microsoft.SharePoint.Publishing.PublishingCache.FlushBlobCache(). Используя этот метод вы заставляете все WFE сервера очистить свой ​​ BLOB кэш для веб-приложений.

    3. Отключить кэш, удалить папку с кэшем, повторно включить кэш.

     

    BLOB кэш большого размера

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

    1. Увеличьте WriteIndexInterval в блоке  BlobCache  файла web.config так чтобы индекс кэша не сериализировался так часто. Значение по-умолчанию 1 минута, но в данном слуучае рекомендуется поднять его до  одного часа.

    2. Увеличьте ограничения на время запуска и выключения веб-приложений чтобы дать больше времени на инициализацию или сериализацию кэша индекса. Обычно эти значения повышаются до 300 секунд, но в случае огромного кэша, их можно увеличить до 600 секунд. Сервер WFE работающий под нагрузкой может досточно долго считывать индекс кэша (а он может быть  и 300 мегабайт)  и поэтому важно дать достаточно времени на выполнение этой операции, в противном случае незавершенная операция приведет к повреждению и очистке кэша.

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

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

        b. Если это возможно и размеры диска позволяют, кэшируйте весь контент на каждом WFE сервере.

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

     

    MCT/MVP Илья Рудь

    Основан на документе “SharePoint Server Caches Overview ”

    v.1.0

    Ссылка на первую часть

    Ссылка на вторую часть