1 March 2017

Мониторинг SharePoint 2013/2016: ключевые счетчики производительности

Softline corporate blogSystem administrationDatabase Administration
Tutorial
Здравствуйте! Меня зовут Любовь Волкова, я системный архитектор департамента разработки бизнес-решений. Основная моя специализация — внедрение, разработка решений, техническая поддержка корпоративных порталов SharePoint. Многолетний опыт работы позволяет выделить основные закономерности, влияющие на производительность серверов, входящих в состав типовой фермы.

Цель этого поста — помочь администраторам корпоративных порталов SharePoint в составлении эффективных планов обслуживания серверов. В тексте ниже собраны счетчики производительности, рекомендуемые нами для включения в планы ежедневного обслуживания серверов фермы SharePoint 2013/2016, а также даны примеры из практики. Данные о счетчиках вы можете использовать для ручной настройки и анализа показателей панели экспресс-мониторинга, а также в ходе автоматизации получения уведомлений в случае превышения счетчиками пороговых значений в течение периода времени, продолжительность которого зависит от требований и стандартов, принятых в организации.



Системные счетчики


Существует несколько универсальных счетчиков производительности, которые следует отслеживать для любой серверной системы, входящей в состав фермы SharePoint.

Процессор


% Загруженности процессора (_Total)\% Processor Time


Доля времени, которую процессор тратит на обработку всех потоков команд, кроме простаивающего. Это значение равно разнице между 100% и процентом времени, которое процессор затрачивает на выполнение простаивающего потока. (Простаивающий поток команд занимает рабочее время процессора в отсутствие других потоков команд.) Этот счетчик является основным показателем загруженности процессора. Он показывает среднее значение занятости процессора в течение интервала измерения.

Необходимо отслеживать производительность и поддерживать загруженность всех процессоров на уровне не выше 75 %. При более высоких уровнях загруженности система не сможет справиться с внезапными всплесками активности. Это также позволит избежать «эффекта домино», когда сбой одного компонента вызовет неисправность других компонентов. Например, если у вас три веб-сервера, необходимо убедиться, что средняя загрузка ЦП на всех серверах меньше 60 %, чтобы в случае сбоя одного из них два других процессора смогли обработать дополнительную нагрузку.

Прерываний/с (Interrupts/sec)


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

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

Система


Длина очереди процессора (Processor Queue Length)


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

Этот счетчик отражает текущее значение и не является средним значением по некоторому интервалу времени.

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

Процесс


Рабочий набор (Working Set) для экземпляра _Total


Показывает текущий размер кэша рабочего набора процесса (в байтах). Рабочий набор — это набор страниц памяти, которые недавно использовались потоками процесса. Если объем свободной памяти на компьютере превышает пороговое значение, неиспользуемые страницы сохраняются в рабочем наборе события процесса. Когда объем свободной памяти становится ниже порогового значения, страницы удаляются из рабочих наборов. Если они потребуются, они будут переданы в рабочий набор при разрешении ошибки ОЗУ, перед тем как будут выгружены из оперативной памяти.

Этот счетчик может указывать как на общесистемные проблемы, так и на проблемы, связанные с определенным процессом. Значительное увеличение или снижение значения размера рабочих наборов приводит к подкачке.

Рекомендуемая настройка для файла подкачки — значение «ОЗУ + 10».

Если происходит удаление из рабочих наборов, необходимо добавить счетчик «Процесс (*)\ Рабочий набор», чтобы узнать, какие процессы подвержены проблеме.

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

% загруженности процессора (% Processor Time) для процессов SharePoint


Показания данного счетчика необходимо анализировать в паре с данными системного счетчика «Процессор\% загруженности процессора» для объекта _Total. Если загруженность всех процессоров превышает пороговые значения, то данные о загрузке процесса ASP.Net позволят определить, не является ли этот процесс источником проблемы.

Процессы SharePoint, которые рекомендуется обязательно включать в мониторинг:

  • w3wp;
  • mssearch;
  • noderunner;
  • miiserver.

Байт исключительного пользования (Private Bytes) для процессов SharePoint


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

Этот счетчик можно использовать для выявления утечек памяти для процессов.

Для процессов SharePoint сравнивают значение этого счетчика с размером кэша для этих же процессов, чтобы определить наличие утечки памяти. Повышение числа байтов исключительного пользования для процесса, сопровождаемое таким же увеличением объема его кэша, свидетельствует о правильном поведении (утечки памяти не происходит).

Байт виртуальной памяти (Virtual Bytes) для процессов SharePoint


Показывает объем виртуального адресного пространства (в байтах), которое в данный момент использует процесс.

Применяется для определения того, не используют ли процессы большой объем виртуальной памяти.

Счетчик потоков (Handle Count) для процесса w3wp


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

Сетевой адаптер


Всего байт/с (Bytes Total/Sec)


Скорость отправки и получения данных через сетевой адаптер. Если эта скорость превышает 40-50 процентов пропускной способности сети, может потребоваться дополнительное выяснение причин.

Логический диск (Disk)


Средняя длина очереди диска (Avg. Disk Queue Length)


Средняя длина очереди запросов к диску. Отображает количество запросов к диску, ожидающих обработки в течении определенного интервала времени. Нормальным считается очередь не больше 2 для одиночного диска. Если в очереди больше двух запросов, то возможно диск перегружен и не успевает обрабатывать поступающие запросы. Уточнить, с какими именно операциями не справляется диск, можно с помощью счетчиков «Среднее количество запросов на чтение» и «Средняя длина очереди записи на диск».

Средняя длина очереди чтения диска (Avg. Disk Read Queue Length)


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

Средняя длина очереди записи на диск (Avg. Disk Write Queue Length)


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

Скорость чтения с диска (байт/с) (Disk Reads/sec)


Скорость, с которой происходит передача данных с этого диска при выполнении операций чтения.

Скорость записи на диск (байт/с) (Disk Writes/sec)


Скорость, с которой происходит передача данных на этот диск при выполнении операций записи.

Пример показаний счетчиков по дисковой подсистеме


Средняя длина очереди диска Средняя длина очереди чтения диска Средняя длина очереди записи на диск Скорость чтения с диска (байт/с) Скорость записи на диск (байт/с)
0,015 0,004 0,011 0,723 9,578

Исходя из значений счетчиков можно сделать вывод, что нагрузка на дисковую систему минимальна и не является узким местом системы.

Память


Доступно Мб (Available Mbytes)


Этот счетчик показывает объем физической памяти, доступный для выделения. Если памяти недостаточно, файл подкачки будет использоваться более интенсивно, а число ошибок страниц в секунду увеличится. Если значение данного счетчик менее 2 GB на веб-сервере, нужно увечить память.

% использования выделенной памяти (% Committed Bytes In Use)


Процентное отношение объема выделенной памяти (Committed Bytes) к пределу выделенной памяти (Commit Limit). Эта величина отражает реально используемый объем доступной виртуальной памяти. Необходимо учитывать, что предел выделенной памяти может быть изменен, если файл подкачки (страничный файл) будет увеличен. Эта величина представляет собой конкретное текущее значение, и не является средним значением по некоторому интервалу времени.

Пороговое значение: 70% для предупреждения, более 90% — критическое. При повышенных значениях достаточно увеличить объем памяти.

Ошибок страницы/сек (Page Faults/sec)


Счетчик показывает среднее число ошибок страниц в секунду. Измеряется количеством неудачных считываний страниц в секунду. Ошибки страниц возникают в случае, когда происходит процесс запроса страницы в памяти, и далее система не может найти его в запрашиваемом месте. Если запрашиваемая страница не найдена в памяти, такая ошибка называется soft page fault. Если запрашиваемая страница должна быть восстановлена с диска, такая ошибка называется hard page fault.

Ввод страниц/сек (Pages Input/sec)


Ввод страниц/сек — это количество страниц, считанных с диска при разрешении ссылок на страницы, которые отсутствуют в памяти в момент обработки ссылки. Ошибка страницы возникает, когда поток ссылается на страницу виртуальной памяти, которая не находится в рабочем наборе оперативной памяти. Этот счетчик учитывает также подкачку (страничный обмен), выполняемый системной кэш-памятью для доступа к данным, запрашиваемым приложениями. Это важный источник сведений для выявления чрезмерной нагрузки на память и возникающего вследствие этого чрезмерного страничного обмена. Рекомендуемое пороговое значение предупреждения – 1000.

Чтение страниц/сек (Page Reads/sec)


Значение счетчика показывает, сколько операций чтения в единицу времени, безотносительно к страницам, было сделано при обработке страничных прерываний. Этот счётчик показывает, что рабочее множество процесса слишком велико для физической памяти, и происходит постраничный обмен с диском. Отображает только количество операций чтения, без учёта количества извлечённых страниц по каждой операции. Большие показания указывают на узкое место памяти. Чрезмерная подкачка может привести к замедлению отклика и его нестабильности.

Счетчики Ввод страниц/сек и Чтение страниц/сек нужно рассматривать совместно. Первый из них содержит количество страниц, прочитанных с диска, а второй — количество операций чтения, совершенных при подкачке. Эти счетчики учитывают Hard Page Faults — операции обращения к памяти, при которых искомая страница данных не находится в физической памяти. Таким образом, если Обмен страниц/сек, Чтение страниц/сек, Ввод страниц/сек постоянно находятся на высоком уровне, то можно предположить, что операционная система активно работает с файлом подкачки, что, в свою очередь, говорит о недостатке памяти. Ввод страниц/сек значение данного счётчика должно быть выше или равно значения Чтение страниц/сек.

Ошибок кэш-памяти/с (Cache Faults)


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

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

Обмен страниц/сек (Pages/sec)


Скорость чтения и записи страниц на диск для разрешения серьезных сбоев страниц. Эта величина является суммой величин Ввод страниц/сек и Вывод страниц/сек. Показания счетчика являются основным указателем типов сбоев, которые приводят к задержкам во всей системе. Он показывает количество полученных страниц для компенсации сбоев страниц в кэше файловой системы. Эти страницы обычно требуются приложениями. Значение этого счетчика не должно превышать 10.

Байт в невыгружаемом пуле (Pool Nonpaged Bytes)


Размер (в байтах) невыгружаемого пула. Невыгружаемый пул представляет собой область виртуальной памяти системы, применяемую для объектов, которые не могут быть записаны на диск и должны оставаться в физической памяти на все время своего существования. Этот счетчик отражает только текущее, а не среднее значение.

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

Показания счетчика не должны превышать минимального из двух значений, — 2x ОЗУ и 128 Гб.

Общие рекомендации по анализу показателей счетчиков памяти


Если \Память\Обмен страниц/сек, \Память\Чтение страниц/сек, Память\Ввод страниц/сек постоянно находятся на высоком уровне, а \Память\Ошибок кэш-памяти/с на низком, то можно предположить, что операционная система активно работает с файлом подкачки, что, в свою очередь, говорит о недостатке памяти. Однако если \Память\Ошибок кэш-памяти/с тоже высок, то, скорее всего, ситуация вызвана активной работой с большими файлами, отображаемыми в память. Обычно это не занимает много времени.

Пример показаний счетчиков памяти


Доступно Мб % исполь-
зования выделенной
памяти
Ошибок страницы
Ввод страниц
Чтение страниц
Обмен страниц
Байт в невы-
гружа-
емом пуле
6312,758 65 605,378 15,936 1,105 15,995 115352406

Показатели среднего объема физической памяти в норме. Показаний к увеличению ее объема нет. Показатель среднего процента используемого объема физической памяти в норме (65%), но приближается к пороговому значению 70%.

Наблюдаются относительно высокие показатели ошибок при обращении к страницам памяти в сочетании с малым кол-вом операций чтения, совершенных при подкачке. Показания счетчика Ввод страниц/сек в норме и существенно ниже порогового значения. Значения счетчика Обмен страниц/сек (15+) превышают пороговое значение 10. Можно предположить, что система периодически активно использует файл подкачки. Одной из наиболее часто встречающихся причин такого поведения системы, — загрузка на портал файлов больших объемов.

Файл подкачки


% использования (% Used)


Процент использования файла подкачки (страничного файла) в настоящий момент.

% использования (пик) (% Used Peak)


Максимальное использование файла подкачки (страничного файла) в процентах.

Страничный файл сервера, также известный как файл подкачки, содержит «виртуальные» адреса памяти на диске. Ошибки страницы возникают, когда процесс нужно остановить и дождаться, пока необходимые «виртуальные» ресурсы будут скопированы с диска в память. Их будет больше, если объема физической памяти недостаточно.

Отметим, что для SharePoint рекомендуется настроить размер файла подкачки 150% от ОЗУ. Абсолютным минимумом должно быть значение ОЗУ+1 Мб.

Отслеживайте объем физической памяти, доступный для выделения. Если памяти недостаточно, файл подкачки будет использоваться более интенсивно, а число ошибок страниц в секунду увеличится.

Счетчики производительности на серверах SharePoint


ASP.Net и Приложение ASP.Net


ASP.Net. Перезапусков приложения (Application Restarts)


Число перезапусков приложения за время жизни веб-сервера. Значение этого счетчика увеличивается после каждого возникновения события Application_OnEnd (завершение работы веб-приложения). Перезапуск приложения может произойти в результате изменений в файле Web.config, изменения сборок в каталоге \Bin приложения или большого числа изменений страниц веб-форм. Неожиданное увеличение этого значения может быть вызвано тем, что выключение веб-приложение произошло в результате непредвиденных обстоятельств. В этом случае необходимо как можно быстрее провести анализ причин возникновения неполадок. Значение данного счетчика должно стремиться к нулю.

ASP.Net. Отклонение запросов (Requests Rejected)


Общее число запросов, отклоненных из-за переполнения очереди запросов. Отклонение запросов часто выполняется из-за недостатка ресурсов сервера для их обработки. Это значение соответствует числу возвращенных кодов ошибки 503 HTTP, означающей, что сервер занят. Примеры причины возникновения недостатков ресурсов: большое число запросов к веб-серверу, большое количество медленных запросов (неоптимизированных) к СУБД, не корректно отрабатывают компоненты решений, написанные сторонними разработчиками. Таким образом, чтобы выявить причину возникновения недостатка ресурсов на сервере и устранить её, нужно провезти более детальный анализ веб-сервера задействовав дополнительный инструментарий.

ASP.Net. Запросов в очереди (Requests Queued)


Веб-приложение MS SharePoint предоставляет стандартные блоки для HTML-страниц, которые отображаются в браузере пользователя через HTTP и требуют предварительного получения и обработки данных (веб-части, пользовательские элементы управления и т.д.). Для подготовки конечного результата обработки данных, который предоставляется пользователю на веб-странице корпоративного портала, может требоваться один или несколько запросов к базе данных, файловой системе и пр. Этот счетчик показывает число запросов, ожидающих обработки. Максимальное значение по умолчанию для этого счетчика 5000. Этот параметр можно изменить в файле Machine.config. Значение данного счетчика не должно превышать 70-75% от порогового значения, т.е. 3500-3750.

ASP.Net. Перезапусков рабочего процесса (Worker Process Restarts)


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

Значение данного счетчика должно стремиться к нулю.

ASP.Net. Время ожидания для запроса (Request Wait Time)


Время ожидания последнего запроса в очереди на обработку в миллисекундах. С увеличением числа событий ожидания пользователи будут замечать снижение производительности при отображении веб-страниц. С увеличением числа событий ожидания пользователи будут замечать снижение производительности при отображении страниц.

Приложение ASP.Net. Запросов/сек (Requests/Sec)


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

Пример показаний счетчиков ASP.Net и Приложение ASP.Net


Application Restarts Requests Rejected Requests Queued Worker Process Restarts Request Wait Time Requests/Sec
2,175 0 0 0 0 0,153

Показатели данных практически всех счётчиков ASP.Net стремятся к нулю в сочетании с небольшими значениями кол-ва запросов в секунду. Следует обратить внимание на высокие показатели кол-ва перезапусков веб-приложения (счетчик Application Restarts). Можно предположить, что пользователи периодически испытывают проблемы с доступностью веб-ресурса, поэтому администратору корпоративного портала необходимо выяснить и устранить причины частых сбоев в работе веб-приложения.

Память CLR .Net (Memory CLR .Net)


Сборов мусора


Сборов мусора для поколения 0 (# Gen 0 Collections) — число извлечений объектов поколения 0 (т. е. объектов, добавленных последними) сборщиком мусора с момента запуска приложения.

Сборов мусора для поколения 1 (# Gen 1 Collections) — число извлечений объектов поколения 1 сборщиком мусора с момента запуска приложения.

Сборов мусора для поколения 2 (# Gen 2 Collections) — число извлечений объектов поколения 2 сборщиком мусора с момента запуска приложения. Этот счетчик увеличивается на 1 после завершения сбора мусора для поколения 2 (что также называют полным сбором мусора).

При мониторинге необходимо обращать внимание на отношение «сборов мусора для поколения 0: сборов мусора для поколения 1: сборов мусора для поколения 2», следить за тем, чтобы число сборов мусора для поколения 2 не сильно превышало число сборов для поколения 0. Оптимальный коэффициент — 2.

% времени в GC (% Time in GC)


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

Исключения CLR.Net (Microsoft .NET CLR Exceptions)


Число исключений.сек (Exceps thrown/sec)


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

Значение данного счетчика должно стремиться к нулю.

Веб-служба (Web Service)


Показания счетчиков из данной группы рассматриваются в привязке к конкретному экземпляру объекта, — веб-приложению корпоративного портала, например, — «SharePoint – 80».



Количество текущих подключений


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

Количество запросов расширения ISAPI в секунду (ISAPI Extension Requests/sec)


ISAPI (Internet Server Application Programming Interface) — это набор интерфейсов, предоставляемых веб-сервером MS IIS (Internet Information Services) для написания приложений, взаимодействующих с этим сервером и расширяющих его возможности. Приложения ISAPI представляют собой динамически подключаемые библиотеки (Dynamic Link Library, DLL), напрямую взаимодействующие с API IIS. Приложения ISAPI загружаются и выполняются в адресном пространстве IIS, поэтому серверу не нужно создавать новый процесс при каждом HTTP-запросе. Поскольку Windows загружает динамически подключаемую библиотеку один раз при первом вызове функции в DLL, то приложение ISAPI остается загруженным и не удаляется, пока не будет остановлен/выключен веб-сервер (если включено кэширование ISAPI), либо приложение не будет выгружено явным образом (если кэширование выключено).

Показания счетчика дает представление о частоте запросов расширения ISAPI, полученных веб-службой.

Счетчики SharePoint Foundation


SQL Query Executing time


Счетчик показывает среднее время выполнения запросов SQL. Возвращаемое значение должно быть настолько низким, насколько это возможно. На показания этого счетчика оказывают существенное влияние данные о нагрузке на базовые подсистемы и их физические характеристики (память, процессор, сеть, дисковые устройства). На показания данного счетчика также оказывают влияние:

  1. Неоптимизированные планы выполнения T-sql запросов, которые могут быть задействованы в коде решения;
  2. Вызов хранимых процедур, с помощью которых могут формироваться различные активности для пользователя портала;
  3. Степень оптимизации производительности индекса.

Executing SQL Queries


Счетчик возвращает число текущих выполняемых SQL-запросов. Значение счетчика существенно зависит от специфики реализованного на портале функционала. Анализ значений должен обязательно проводиться с учетом специфики обработки контента: работа с базовыми списками и библиотеками, использование группировок и фильтров в представлении данных, полей подстановки, обращение к спискам с внешними данными, обработка запросов к внешним источникам данных или обработка списков с большим кол-вом элементов и многое другое.

Executing Time/Page Request


Счетчик возвращает среднее время выполнения (в мс) запросов веб-страниц, которые были обработаны за время сбора данных. Статистика включает данные о запросе динамических веб-страниц, построение которых обеспечивается ASP.Net.

Current Page Requests


Значение счётчика показывает количество текущих запросов, которые находятся в обработке. Они могут существенно отличаться в разные периоды и зависят от текущего кол-ва обращений к порталу SharePoint. Наиболее важным является анализ показаний в часы пиковой нагрузки в сочетании с показателями о среднем выполнении запросов веб-страниц (Executing Time/Page Request) и данных о числе текущих выполняемых SQL-запросов.

Reject Page Requests Rate


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

Incoming Page Requests Rate


Значение счетчика отображает о количестве входящих запросов за последнюю секунду. Аналогично Current Page Requests в привязке к строго определенному интервалу времени – 1с.

Active Threads


Счетчик возвращает число потоков, которое выполняется в коде SharePoint в настоящее время. Показатели зависят от многих факторов: процессор и его характеристики, показателей на базовые подсистемы (память, процессор, сеть, дисковые устройства), текущую нагрузку на портал. Инициация дополнительных потоков может быть инициирована программным образом в коде в составе решений под платформу SharePoint.

Пример показаний счетчиков SharePoint Foundation


SQL Query Executing time Executing SQL Queries Executing Time/Page Requests Current Page Request Reject Page Requests Rate Incoming Page Requests Rate IActive Threads
0,048 0,051 0,197 1,581 0 0,396 1,595

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

Мониторинг на SQL Server


Контроль дисковой подсистемы


Microsoft SQL Server использует вызовы системных функций ввода-вывода операционной системы Microsoft Windows Server для выполнения дисковых операций чтения и записи. SQL Server определяет, когда и как выполнять дисковые операции ввода-вывода, но базовые операции ввода-вывода выполняет операционная система Windows.
Далее описывается минимальный набор счетчиков, наблюдение за которыми рекомендуется включить в планы ежедневного обслуживания.

Физический диск\Среднее время чтения с диска (Physical Disk\Avg. Disk sec/read)


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

Физический диск\Среднее время записи на диск (Physical Disk\Avg. Disk sec/write)


Среднее время записи на диск — это время в секундах, затрачиваемое в среднем на одну операцию записи данных на диск. Базовые показатели данного счетчика не должны превышать 15 мс.

Счётчики «Среднее время чтения с диска», «Среднее время записи на диск» измеряют время ожидания непосредственно в той программной надстройке, где диски устройства хранения данных становятся доступны операционной системе. Они позволяют точно измерить, сколько времени диски и аппаратное окружение потратили на обслуживание запросов ввода-вывода независимо от того, какие были задействованы аппаратные и программные средства.

Для OLTP-систем среднее значение должно быть меньше 15 мс с допустимыми пиками до 25 мс. Чем меньше времени требуется для чтения или записи данных, тем быстрее будет функционировать система.

Контроль использования ЦП


Контроль экземпляра Microsoft SQL Server позволяет определить, находятся ли уровни загрузки ЦП в стандартных диапазонах. Постоянный высокий уровень использования ЦП может указывать на необходимость обновления ЦП или на необходимость добавления нескольких процессоров. Оптимизация работы приложения может снизить уровень загрузки ЦП. Процессорная система в наибольшей степени нагружается операциями:

  • компиляции и рекомпиляции планов выполнения;
  • сортировки;
  • хеширования.

Ниже дается описание счетчиков, наблюдение за которыми рекомендуется включить в планы ежедневного обслуживания.

<Экземпляр SQL Server>SQL Statistics\SQL Compilations/sec


Компиляций SQL, выполненных за секунду. Указывает число раз, когда вводился путь компиляции кода. Включает операции компиляции, вызванные повторной компиляцией на уровне инструкций в SQL Server. Объект SQL Server «статистика SQL в Microsoft SQL Server» обеспечивает работу счетчиков для наблюдения компиляции и типов запросов, отправляемых экземпляру SQL Server. Наблюдение за числом компиляций и повторных компиляций запросов и числа пакетов, полученных экземпляром SQL Server, дает представление о том, как быстро SQL Server выполняет запросы пользователей и насколько эффективно их обрабатывает оптимизатор запросов. Компиляция занимает в обработке запроса значительную часть времени. Чтобы сэкономить на стоимости компиляции, компонент Database Engine сохраняет компилированный план запроса в кэше запросов. Целью кэширования является снижение числа компиляций путем сохранения уже откомпилированных запросов для дальнейшего повторного использования, избавляя от необходимости повторной компиляции аналогичных запросов, которые могут поступить позже. Однако каждый уникальный запрос должен быть скомпилирован хотя бы однажды. Компиляция запросов может быть вызвана следующими факторами:

  • Изменением схемы, включая базовые изменения (добавление в таблицу столбцов или индексов) или статистической схемой (вставка или удаление значительного числа строк в таблице);
  • Изменением среды (инструкцией SET). Изменениями параметров сеанса (например, повторную компиляцию запроса может вызвать предложение ANSI_PADDING или ANSI_NULLS).

<Экземпляр SQL Server>SQL Statistics \Batch Requests/sec


Счетчик указывает количество получений потоков из планировщиков операционной системы (не из планировщиков SQL) для выполнения операций для других потоков в состоянии ожидания. Для счетчика «Batch Requests/sec» используется пороговое значение, приблизительно в 5000 раз большее количества процессоров в сервере. Это значение также может быть высоким в системах с включенной гиперпоточностью и невысокой загрузкой ЦП.

<Экземпляр SQL Server>SQL Statistics\SQL ReCompilations/sec


Среднее число рекомпиляций в секунду. Чем меньше значение этой характеристики, тем лучше.

<Экземпляр SQL Server>Access Methods\Workfiles Created/sec. Workfiles


Workfiles — это часть страниц файла данных, выделенных для внутренних нужд SQL Server. SQL Server активно использует Workfiles для выполнения операций хеширования и хранения промежуточных результатов хеширования. Большое количество создаваемых Workfiles может косвенно указывать на отсутствие индексов, которые может использовать SQL Server для выполнения операций соединения таблиц, в результате чего он вынужден выполнять соединения таблиц через хеширование. Норма на соотношение Workfiles Created/sec к Batch Requests/sec составляет не более 20%. Workfiles создаются во временной базе для обработки запросов, которые слишком велики для размещения в оперативной памяти.

Процессор\Длина очереди процессора (Processor\Processor Queue Length)


Показывает количество потоков, ожидающих выполнения на процессоре. Управление работой SQL Server осуществляется с помощью планировщиков в механизме СУБД, где сервер помещает в очередь и обрабатывает собственные запросы. Поскольку работа SQL Server управляет им самим, он использует только один поток ЦП для каждого логического процессора. Это означает, что в очереди процессора системы, предназначенной для SQL Server, должно находиться минимальное количество потоков.

Пример показаний счетчиков мониторинга ЦП


Batch Requests
/sec
SQL Compilations
/sec
SQL ReCompilations
/sec
Workfiles Created
/sec
Processor Queue Length
19,998 0,675 0,006 1,267 0,151

Расчет значений, на основании которых можно выявить одну из предпосылок перегрузки процессоров:

  • Соотношение между SQL Compilations/sec и Batch Requests/sec
    0,6/19 = 0.03
    Показывает, что в 3% случаев выполнения процедур выполняются компиляции новых запросов. Это говорит о том, что в БД присутствует минимальное число динамических запросов. Рекомендуемое значение SQL Compilations/sec должно составлять менее 10% от значения Batch Requests/sec. Показатель в пределах нормы.
  • Соотношение между SQL ReCompilations/sec и SQL Compilations/sec
    0,006/0,6 = 0.01
    Показывает, что в 1% случаев выполняется повторная компиляция ранее скомпилированных запросов. Рекомендуемое значение SQL Recompilations/sec должно составлять менее 10% от значения SQL Compilations/sec. Показатель в пределах нормы.
  • Соотношение между Workfiles Created/sec и Batch Requests/sec
    1/19 = 0.05
    Показатель в пределах нормы.

Batch Requests/sec Отношение SQL Compilations/sec к Batch Requests/sec Отношение SQL ReCompilations/sec к SQL Compilations/sec Отношение Workfiles Created/sec к Batch Requests/sec
Средний показатель в рассматриваемой системе в рабочее время 0,034 0,01 0,06
Рекомендуемое значение показателя Не более 0.1 Не более 0.1 Не более 0.2
Выполняемость рекомендаций в рассматриваемой системе да да да

Мониторинг использования памяти


Максимальный размер выделяемой памяти


По умолчанию, SQL Server изменяет свои требования к памяти динамически, исходя из доступных ресурсов системы.

Если SQL Server нужно больше памяти, он производит запрос к операционной системе, чтобы определить, доступна ли свободная физическая память, и использует ее. Если же SQL Server не нуждается в памяти, выделенной для него, он освобождает ее для операционной системы. Нужно отказаться от динамического использования памяти, так как при достижении порога Memory: Available Bytes в 100...50 MB Windows включит агрессивный сброс (trimming) рабочих наборов процессов, включая системные драйверы, что приведет к резкому снижению производительности всех компонентов ОС. Чтобы избежать данной проблемы на сервере СУБД нужно задать значения параметрам конфигурации сервера Min Server Memory и Max Server Memory.

Далее в описании приводятся расчеты на одном из реальных примеров SQL Server, совмещающего два экземпляра SQL, один из которых выделен под базы данных SharePoint.

Существующему экземпляру b6s SQL выделено 2147483647 Mb, то есть SQL Server доступна вся память сервера – 96 GB.



Для расчета Max Server Memory применяется следующая (для не кластерного SQL Server) формула:

SQL максимальный размер ОЗУ = TotalPhyMem — (NumOfSQLThreads * ThreadStackSize) — (1GB * ОКРУГЛВНИЗ(NumOfCores/4)) — RAMOSReserved — RAMForOtherApps, где:

  • TotalPhyMem – общий физический размер ОЗУ на сервере.
  • NumOfCores – кол-во ядер процессоров.
  • NumOfSQLThreads – кол-во потоков, использующихся на сервере для обработки запросов к базам данных. При кол-ве ядер до 4 значение NumOfSQLThreads всегда постоянно и равно 256. При кол-ве ядер свыше 4 расчет выполняется по формуле: NumOfSQLThreads = 256 + (NumOfCores- 4) * 8.
  • ThreadStackSize = 2Мб для серверов x64. Для серверов IA64 ThreadStackSize=4Мб.
  • RAMOSReserved – ОЗУ для операционной системы. 20% для серверов с TotalPhyMem не более 15 Гб и 12,5% для большего объема.
  • RAMForOtherApps – ОЗУ для других экземпляров SQL-сервера и приложений.



Получить информацию о процессорах и размере физической памяти на сервере можно при помощи следующего скрипта:

SELECT cpu_count AS [Logical CPU Count] 
, hyperthread_ratio AS [Hyperthread Ratio] 
, cpu_count / hyperthread_ratio AS [Physical CPU Count] 
, osi.physical_memory_kb / 1024 AS [Physical Memory (MB)] 
, sqlserver_start_time
FROM sys.dm_os_sys_info as osi;

Для b6s расчеты будут следующими:

  • TotalPhyMem = 98276 Мб.
  • NumOfCores = 32.
  • NumOfSQLThreads = 256 + (32- 4) * 8 = 480.
  • ThreadStackSize = 2 Мб.
  • RAMOSReserved = 12,5% * 98276 Мб = 11793 Мб.
  • RAMForOtherApps – Заказчик должен самостоятельно определить это значение. В текущих расчетах предполагаем значение в 8 000 Мб на второй экземпляр SQL.

SQL максимальный размер ОЗУ = 98276 Мб — (480 * 2 Мб) — (1GB * ОКРУГЛВНИЗ(32/4)) — 11793 Мб- 8000 Мб = 98276 Мб — 960 Мб – 8192 Мб — 11793 Мб- 8000 Мб = 69331 Мб.

Таким образом, размер буферного пула (при соответствующем значении «Max Server Memory») может вырасти до 69331 MB, тем самым, не влияя на работу операционной системы.

Далее приводится описание счетчиков для мониторинга памяти, используемой SQL Server, наблюдение за которыми рекомендуется включить в ежедневный мониторинг.

<Экземпляр SQL Server>Memory Node\Target Server Memory


Данные счетчика предоставляют информацию об идеальном объеме памяти, необходимом серверу.

<Экземпляр SQL Server> Memory Node \Total Server Memory


Данные счетчика предоставляют информацию об объеме памяти, выделенной серверу диспетчером памяти. Если Total Server Memory меньше Target Server Memory является признаком нехватки памяти.

<Экземпляр SQL Server>Buffer Manager\Buffer cache hit ratio


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

<Экземпляр SQL Server>Buffer Manager\Page Life Expectancy


Указывает среднее время жизни страниц в буферном пуле. Пороговое значение — не менее 300 секунд.

<Экземпляр SQL Server>Memory Manager\Memory Grants Pending


Указывает общее число процессов, ожидающих предоставления памяти рабочей памяти.

Пример показаний счетчиков мониторинга использования памяти


Target Server Memory (КiВ) Total Server Memory (КiВ) Buffer cache hit ratio Page Life Expectancy Lazy Writes
/sec
Memory Grants Pending
5312958 3683571 99,92% 9 905 712 10,739 0,018

Значения, находятся в приделах нормы, но следует отметить тот факт, что Total Server Memory меньше Target Server Memory. Обычно это признак нехватки памяти, но в данном случае ситуация выглядит иначе, так как SQL Server запрашивает память по мере необходимости. Если требования к памяти незначительны, то Total Server Memory останется намного ниже, чем Target Server Memory. Требования к памяти SQL Server для MS SharePoint Foundation 2013 – 8-16 GB для использования в производственной среде в ферме с одним сервером (подробнее здесь). Таким образом, на текущий момент увеличение памяти на сервере СУБД не требуется.

Если вы добрались до конца текста, значит, вы действительно глубоко копаете в теме администрирования SharePoint Server. Вероятно, у вас могут быть вопросы, которые остались за рамками этого текста. Не стесняйтесь задавать их в комментариях.
Tags:sharepoint 2013sharepointкорпоративный порталадминистрированиеоптимизация производительностимониторинг
Hubs: Softline corporate blog System administration Database Administration
+11
12.3k 44
Comments 12