Записки IT специалиста
Производительность дисковой подсистемы — краткий ликбез.
- Автор: Уваров А.С.
- 08.02.2013

Когда заходит речь о производительности в первую очередь обращают внимание на частоту процессора, скорость памяти, чипсет и т.д. и т.п., про дисковую подсистему если и вспоминают, то мимоходом, чаще всего обращая внимание только на один параметр — скорость линейного чтения. В тоже время именно дисковая подсистема чаще всего становится узким местом в системе. Почему так происходит и как этого избежать мы расскажем в данной статье.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Прежде чем говорить о производительности вспомним как устроен жесткий диск, так как многие особенности и ограничения HDD заложены именно на физическом уровне. Не вдаваясь в подробности, можно сказать что диск состоит из одной или нескольких магнитных пластин над которыми расположен блок магнитных головок, пластины в свою очередь содержат намагниченные концентрические окружности — цилиндры (дорожки), которые в свою очередь состоят из небольших фрагментов — секторов. Сектор — минимальное адресуемое пространство диска, его размер традиционно составляет 512 байт, хотя некоторые современные диски имеют более крупный сектор размером в 4 Кбайт.
Во время вращения диска сектора проходят мимо блока магнитных головок, которые осуществляют запись или чтение информации. Скорость вращения (угловая скорость) диска в конечный момент времени величина постоянная, однако линейная скорость различных участков диска различна. У внешнего края диска она максимальна, у внутреннего — минимальна. Рассмотрим следующий рисунок:
![]()
Как видим за один и тот же промежуток времени определенная область диска сделает поворот на один и тот же угол, если мы обозначим эту область в виде сектора, то окажется что в него попадет пять секторов с внешней дорожки и только три с внутренней. Следовательно за данный промежуток времени магнитная головка считает с внешнего цилиндра большее количество информации, чем с внутреннего. На практике это проявляется в том, что график скорости чтения любого диска представляет собой снижающуюся кривую.
Начальные сектора и цилиндры всегда располагаются с внешней стороны, обеспечивая максимальную скорость обмена данными, поэтому рекомендуется размещать системный раздел именно в начале диска.
Теперь перейдем на более высокий уровень — уровень файловой системы. Файловая система оперирует более крупными блоками данных — кластерами. Типичный размер кластера NTFS — 4 Кб или 8 секторов. Получив указание считать определенный кластер диск произведет чтение 8 последовательных секторов, при последовательном расположении данных операционная система даст указание считать данные начиная с кластера 100 и заканчивая кластером 107. Данное действие будет представлять собой одну операцию ввода-вывода (IO), максимальное количество таких операций в секунду (IOPS) конечно и зависит от того, сколько секторов пройдут мимо головки за единицу времени (а также от времени позиционирования головки). Скорость обмена данными измеряется в МБ/с (MBPS) и зависит от того, какое количество данных будет считано за одну операцию ввода-вывода. При последовательном расположении данных скорость обмена будет максимальной, а количество операций ввода-вывода минимально.
![]()
Здесь будет не лишним вспомнить о таком параметре как плотность записи, которая выражается в площади необходимой для записи 1 бита данных. Чем выше этот параметр, тем больше данных может вместить одна пластина и тем выше скорость линейного обмена данными. Этим объясняются более высокие скоростные характеристики современных винчестеров, хотя технически они могут ничем не отличаться от более старых моделей. Рисунок ниже иллюстрирует данную ситуацию. Как несложно заметить, при более высокой плотности записи за один и тот-же промежуток времени, при той же самой скорости вращения будет считано/записано большее количество данных
![]()
Теперь разберем прямо противоположную ситуацию, нам требуется считать большое количество небольших файлов случайным образом разбросанных по всему диску. В этом случае количество операций ввода-вывода будет велико, а скорость обмена данными низка. Основное время будет занимать ожидание доступа к следующему блоку данных, которое зависит от времени позиционирования головки и задержки из-за вращения диска. Простой пример: если после 100 сектора поступит команда прочитать 98, то придется ждать полный оборот диска, пока появится возможность прочитать данный сектор. Сюда же следует добавить время, которое требуется чтобы физически прочитать нужное количество секторов. Совокупность этих параметров составит время случайного доступа, которое имеет очень большое влияние на производительность винчестера.
![]()
Следует отметить, что для ОС и многих серверных задач (СУБД, виртуализация и т.п.) характерен именно случайный доступ с размером блока в 4 Кб (размер кластера), при этом основным показателем производительности будет не скорость линейного обмена данными (MBPS), а максимальное количество операций ввода-вывода в секунду (IOPS). Чем выше этот параметр, тем большее количество данных может быть считано в единицу времени.
Однако количество операций ввода-вывода не может расти бесконечно, это значение очень жестко ограничено сверху физическими показателями винчестера, а именно временем случайного доступа.
А теперь поговорим о фрагментации, суть этого явления общеизвестна, мы же посмотрим на него сквозь призму производительности. Для крупных файлов и линейных нагрузок фрагментация способна значительно снизить производительность, так как последовательный доступ превратится в случайный, что вызовет резкое снижение скорости доступа и также резко увеличит количество операций ввода-вывода.
При случайном характере доступа фрагментация не играет особой роли, так как нет никакой разницы в каком именно месте диска находится тот или иной блок данных.
Появление дисков с более крупным 4 Кб сектором стало причиной появления еще одной проблемы: выравнивания файловой системы относительно секторов диска. Здесь возможны два варианта: если файловая система выровнена, то каждому кластеру соответствует сектор, если не выровнена, то каждому кластеру соответствует два смежных сектора. А так как сектор это минимальная адресуемая единица, то для считывания одного кластера потребуется считать не один, а два сектора, что негативно скажется на производительности, особенно при случайном доступе.
![]()
Реальная производительность жесткого диска — это всегда баланс между скоростью обмена данными и количеством операций ввода вывода. Для последовательного чтения характерен большой размер пакета данных, который считывается за одну операцию ввода вывода. Максимальная скорость (MBPS) будет достижима при последовательном чтении секторов с внешнего края диска, количество операций ввода-вывода (IOPS) будет при этом минимально — дорожки длинные, позиционировать головку нужно реже, данных при этом считывается больше. На внутренних дорожках линейная скорость будет ниже, количество IO — выше, дорожки короткие, позиционировать головку нужно чаще, данных считывается меньше.
При случайном доступе скорость будет минимальна, так как размер пакета данных очень мал (в худшем случае кластер) и производительность упрется в максимально доступное количество IOPS. Для современных массовых дисков это значение равно около 70 IOPS, нетрудно посчитать, что при случайном доступе с размером пакета в 4 Кб мы получим максимальную скорость не более 0,28 MBPS.
Непонимание этого момента часто приводит к тому, что дисковая подсистема оказывается бутылочным горлышком, которое тормозит работу всей системы. Так, выбирая между двумя дисками с максимальной линейной скоростью в 120 и 150 MBPS, многие не задумываясь выберут второй, не посмотрев на то, что первый диск обеспечивает 70 IOPS, а второй всего 50 IOPS (вполне характерная ситуация для экономичных серий), а потом будут сильно удивляться тому, почему «более быстрый» диск сильно тормозит.
Что будет, если количества IOPS диска окажется недостаточно чтобы обработать все запросы? Возникнет очередь дисковых запросов. На практике все несколько сложнее и очередь диска будет возникать даже в том случае, когда IOPS достаточно. Это связано с тем, что различные процессы, обращающиеся к диску, имеют разный приоритет, а также то, что операции записи всегда имеют приоритет над операциями чтения. Для оценки ситуации существует параметр длина очереди диска, значение которого не должно превышать (по рекомендациям Microsoft)
В любом случае постоянная большая длина очереди говорит о том, что системе недостаточно текущего значения IOPS. Увеличение очереди диска на уже работающих системах говорит либо о увеличении нагрузки, либо о выходе из строя или износе жестких дисков. В любом случае следует задуматься об апгрейде дисковой подсистемы.
На этом мы закончим наш сегодняшний материал, приведенной информации должно быть достаточно для понимания физических процессов, происходящих при работе жесткого диска и того, как они влияют на производительность. В следующих статьях мы рассмотрим, как правильно определить, какое количество IOPS нужно в зависимости от характера нагрузки и как правильно спроектировать дисковую подсистему, чтобы она удовлетворяла предъявляемым требованиям.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
![]()
Или подпишись на наш Телеграм-канал: ![]()
Как ускорить Windows: пошаговое руководство CHIP

Со временем ОС Windows замедляет свою работу; однако в ее составе есть мощные инструменты для определения и устранения ошибок.

Любой компьютер может выдержать только одно: высокую производительность. Параметры постоянно ухудшаются в основном у «пожилых» систем Windows. Так как в большинстве случаев это происходит медленно и без видимых причин, то пользователю приходится сначала осуществлять поиск и устранение ошибок практически наугад.
Операционная система непрерывно записывает многочисленные параметры, оказывающие влияние на производительность, анализ которых показывает, какие именно процессы замедляют систему.
«Системный монитор» Windows
Инструменты Windows «Менеджер задач» (Task-Manager) и «Монитор ресурсов» (Ressource monitor) весьма известны, однако дают лишь поверхностное представление, так как отображают лишь несколько параметров и представляют их не очень гибко. Больше возможностей предлагает «Системный монитор» в версиях Windows 7, 8 и 10.

Системный монитор Windows
Инструмент, происходящий из семейства Windows Server, может отображать все возможные характеристики в виде графиков, причем многие сотни возможных значений с частично зашифрованными названиями представляют новую задачу. Мы выбрали самые важные из них, которые указывают на типичные затруднения в действующей ОС Windows и расскажем, как их устранить.
В самом благоприятном случае это удается с помощью простых изменений конфигурации или (если первый вариант не помог) путем целенаправленного обновления аппаратного обеспечения.
Системный монитор Windows организует сведения о производительности по дюжине категорий, из которых для домашнего ПК наиболее интересными являются следующие: процессор, ОЗУ, жесткий диск, процессы (включая отдельные программы) и система.
Во всех категориях следует обращать внимание на различные характеристики для того, чтобы определить, вызвана ли проблема производительности только одной программой или она возникает в результате взаимодействия нескольких причин. В первом случае с помощью диспетчера задач или монитора ресурсов вы можете узнать, какая программа является виновником, и «обезвредить» ее.
Во втором случае, если чрезмерный многозадачный режим перегружает процессор или жесткий диск, доступны однозначные индикаторы производительности. С их помощью можно проанализировать все категории вашей системы для поиска и устранения причины «торможения».
Используем «Системный монитор»
Инструмент мониторинга скрыт в глубинах системы управления Windows. Проще всего найти его, написав «Системный» в окне поиска меню «Пуск», после чего появится ссылка на инструмент. После запуска он показывает только один график с указанием процессорного времени. Щелчком на зеленом символе «+» можно добавить к индикатору новые графики.
Для этого раскройте категорию, отмеченную синим шрифтом, выберите в появившемся перечне требуемый индикатор производительности и при необходимости «Экземпляр» (например, процесс или носитель данных, для которого требуется контроль), затем нажмите «Добавить» и «ОК».
Мы указываем имена по схеме «Объект | индикатор производительности». Хотя параметры обладают различными единицами измерения, системный монитор масштабирует их в сопоставимые графики. С помощью диалогового окна свойств каждого индикатора можно настроить масштаб и цвет графика.
Процесс | Загруженность процессора (%)
Данное значение отображается при запуске системного монитора. Оно указывает, на сколько процентов используется вычислительная мощность ПК. Естественно, что данное значение увеличивается при нагрузке компьютера. Следует задуматься, если значение не снижается менее 5-10% при отсутствии запущенных программ. Вызовите менеджер задач, нажав Ctrl+Shift+Esc, перейдите на вкладку «Процессы» и отсортируйте список по значению «ЦП».

Затем исследуйте процесс, максимально нагружающий процессор: добавьте индикатор «Процесс | % загруженности процессора» и в пункте «Экземпляры выбранного объекта» выберите соответствующую программу. Если значения данного графика увеличиваются и уменьшаются одновременно с общим процессорным временем, то, вероятно, эта программа и является «виновником».
В нашем компьютере процесс Adobe CEF Helper.exe, вызываемый программой Adobe Creative Cloud, постоянно нагружает процессор на 10%. Отключение синхронизации файлов прекращает этот процесс. Если процесс не является необходимым, можно отключить его из автозагрузки.
Система | Длина очереди процессора
Если все ядра процессора заняты, задачи накапливаются в очереди. Если параметр «Длина очереди процессов» постоянно превышает ориентировочное значение, равное двадцатикратному числу ядер процессора, в большинстве случаев работа системы значительно замедляется. У домашних ПК это обычно происходит только в случае процессов с большим объемом вычислений, например, при кодировании видео.

Для спокойной работы над приоритетными задачами вызовите менеджер задач, перейдите на вкладку «Процессы», правой кнопкой мыши щелкните на ресурсоемком процессе и выберите пункт «Приоритет | Низкий», после чего система будет обрабатывать этот процесс как второстепенный. В некоторых программах-кодировщиках видео, например, Avidemux, вы можете указать в настройках, чтобы кодирование всегда проводилось с низким приоритетом.
Процессор | Время обработки прерывания
Наряду с вычислительными задачами процессор также нагружают запросы на прерывания. Программное или аппаратное обеспечение выдают их, если загруженная в подсистему задача выполнена или пользователем осуществляется ввод данных.
Затруднения возникают, если подключенное устройство не удается инициализировать и оно постоянно отправляет новые запросы или сетевая карта сервера перегружена чрезмерным трафиком. С помощью диалогового окна «Добавить» системного монитора добавьте к работающей диаграмме содержательные графики.
Признаком подобных проблем является «торможение» системы при подключении или активации подозрительного устройства (сетевого или жесткого диска). В этом случае проконтролируйте его индикатор производительности.
Если значение увеличивается после подключения или во время использования, вы можете попытаться обновить соответствующий драйвер, подключить устройство по-другому (например, в другой PCI-слот) или заменить его.
Память | Виртуальная память
Проблемы с оперативной памятью начинаются, когда ее слишком мало. Это происходит, если индикатор «Память | Байт выделенной виртуальной памяти» превышает значение суммы объема ОЗУ и половины объема файла подкачки. Для этого проанализируйте абсолютное число байт, отображаемое системным монитором при среднем значении.
Размер файла подкачки можно узнать так: нажмите Win+Pause, затем «Дополнительные параметры системы», выберите «Быстродействие | Параметры» и затем «Дополнительно | Изменить». Файл подкачки обычно увеличивается динамически, за исключением тех случаев, когда вы установили его фиксированный размер или жесткий диск заполнен.

Настройка виртуальной памяти
Освободите место на диске и разрешите системе управлять размером файла подкачки. Если улучшения не произойдет, воспользуйтесь советами в следующем пункте.
Память | Число «страниц» в секунду
Данный индикатор показывает, сколько минимальных элементов памяти («страниц») считывается из файла подкачки или записывается в него в течение 1 секунды. Если данная характеристика увеличивается во время запуска программы, это показывает, что объем физической памяти мал и системе приходится сохранять слишком много данных на жесткий диск.

Запустите «Монитор ресурсов» через поле поиска меню «Пуск» отсортируйте перечень во вкладке «Память» по параметру «Общий КБ» и завершите самые «прожорливые» программы, в которых вы больше не нуждаетесь. Очистите меню автозапуска (см. п. 1) и по возможности увеличьте объем оперативной памяти.
Процесс | Рабочий набор
Если вы с помощью предыдущих пунктов определили программу-«пожирателя» памяти, то можно ограничить ее потребности. Добавьте индикатор «Процесс | Рабочий набор» и в пункте «Экземпляры …» выберите подозрительную программу, которая часто является браузером со многими дополнениями и открытыми вкладками.

Проверьте, что произойдет, если отключить дополнения, например, блокировщик рекламы (Adblock), которые часто потребляют много памяти. Если значение уже в самом начале увеличивается до 100%, щелкните в перечне правой кнопкой на индикаторе, затем на «Свойства» и измените масштаб до ближайшего меньшего значения.
Физический носитель данных | Время (%)
Если данное значение при системе в состоянии покоя остается в верхней области, вероятно, активность жестких дисков «тормозит» ваш ПК. Перейдите в «Мониторе ресурсов» на вкладку «Диск» и отсортируйте «Процессы с активностью носителя» по параметру «Всего (байт/с)».

Проверьте возможность завершения или изменения конфигурации процессов с наиболее интенсивным объемом ввода/вывода. Например, настройте антивирусное ПО таким образом, чтобы ежедневное сканирование выполнялось только в том случае, если оно не мешает основной работе. Наиболее эффективным решением станет переход на SSD-накопитель.
Процесс | Байты данных ввода/вывода
Если одна программа постоянно «держит в напряжении» жесткий диск или сетевую карту (см. п. 6), добавьте данный индикатор и выберите в качестве «Экземпляра» соответствующую программу.

Теперь вы можете проконтролировать успешность изменений конфигурации, например, при отключении автоматических инструментов синхронизации, таких как Google Drive и One Drive.
Средняя длина очереди диска
Если значение индикатора «Физический диск | Средняя длина очереди диска» остается высоким, жесткий или твердотельный накопитель перегружен конкурирующими запросами.

В случае одного жесткого диска помогает уменьшение количества процессов (см. п. 1) или использование SSD-накопителя в качестве системного диска. Если в компьютере установлены два жестких диска, добавьте для каждого из них свой график (в диалоговом окне добавления данных в пункте «Экземпляры» щелкните на диск, затем выберите «Добавить»).
С помощью монитора ресурсов проанализируйте, какая программа становится причиной ввода/вывода данных (см. п. 7) и измените ее конфигурацию и организацию файлов таким образом, чтобы на менее нагруженный диск поступало больше задач: например, музыкальный проигрыватель может располагать свои MP3-файлы на втором диске, чтобы слегка «разгрузить» системный диск.
Система | Контекстных переключений в секунду
Если указанные индикаторы производительности остались без видимых изменений или их оптимизация не привела к успеху, следует оценить данное значение. Оно показывает, как часто процессору приходится переключаться между задачами, что каждый раз приводит к незначительной потере производительности.

Если этот график у обычного домашнего ПК постоянно находится в верхней четверти диаграммы и компьютер «тормозит», необходимо закрыть все программы, в которых вы сейчас не нуждаетесь, например, браузер со многими открытыми вкладками с флэш-анимацией или работающий музыкальный проигрыватель. Не в последнюю очередь следует подумать об отключении ненужных пунктов в автозагрузке (см. п. 1).
Отображение отчета о надежности
Низкая производительность может часто становиться причиной нестабильности. Если компьютер «зависает», уже поздно что-либо предпринимать: причину можно определить после перезагрузки. Для этого перейдите из меню «Пуск» в утилиту «Просмотр журнала надежности системы». Появляется временная шкала, на которой отображаются ошибки приложений, ошибки Windows, предупреждения и т.д.

Благодаря этому вы после сбоя системы можете определить, какая программа или компонент оборудования стали причиной. Хотя сведения в пункте «Показать технические подробности» являются зашифрованными, они предлагают исходные точки для поиска решения проблемы в Интернете.
Анализ «сбойного» процесса загрузки
Для определения причины слишком долгой загрузки системы существует набор утилит Windows Performance Toolkit из пакета Windows SDK (можно загрузить с сайта microsoft.com). С помощью инструмента «Запись производительности» запуск системы производится с протоколированием всех параметров.

Протокол может быть открыт с помощью утилиты «Анализатор производительности Windows», который показывает, какой процесс требует какого времени. После этого вы можете обновить или удалить соответствующую программу или изменить ее конфигурацию.
Мониторинг SharePoint 2013/2016: ключевые счетчики производительности
Здравствуйте! Меня зовут Любовь Волкова, я системный архитектор департамента разработки бизнес-решений. Основная моя специализация — внедрение, разработка решений, техническая поддержка корпоративных порталов 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. Возвращаемое значение должно быть настолько низким, насколько это возможно. На показания этого счетчика оказывают существенное влияние данные о нагрузке на базовые подсистемы и их физические характеристики (память, процессор, сеть, дисковые устройства). На показания данного счетчика также оказывают влияние:
- Неоптимизированные планы выполнения T-sql запросов, которые могут быть задействованы в коде решения;
- Вызов хранимых процедур, с помощью которых могут формироваться различные активности для пользователя портала;
- Степень оптимизации производительности индекса.
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
Показатель в пределах нормы.
Мониторинг использования памяти
Максимальный размер выделяемой памяти
По умолчанию, 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-сервера и приложений.
Получить информацию о процессорах и размере физической памяти на сервере можно при помощи следующего скрипта:
Для b6s расчеты будут следующими:
- TotalPhyMem = 98276 Мб.
- NumOfCores = 32.
- NumOfSQLThreads = 256 + (32- 4) * 8 = 480.
- ThreadStackSize = 2 Мб.
- RAMOSReserved = 12,5% * 98276 Мб = 11793 Мб.
- RAMForOtherApps – Заказчик должен самостоятельно определить это значение. В текущих расчетах предполагаем значение в 8 000 Мб на второй экземпляр SQL.
Таким образом, размер буферного пула (при соответствующем значении «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. Вероятно, у вас могут быть вопросы, которые остались за рамками этого текста. Не стесняйтесь задавать их в комментариях.
Использование System Monitor для диагностики проблем производительности
System Monitor представляет собой стандартное средство для диагностики проблем производительности операционной системы, различных компонент приложений и используемого оборудования. С его помощью можно измерять производительность как локального компьютера, так и других компьютеров в сети. System Monitor является основным инструментом для идентификации узких мест в системе.
Компоненты анализируемой системы интерпретируются как объекты, параметры которых представляются в виде набора счетчиков, при этом для каждого объекта определен свой набор счетчиков. Некоторые приложения в процессе установки расширяют системный набор своими, специфическими объектами и счетчиками, характеризующими производительность этого приложения. Например, при установке Microsoft SQL Server к стандартному набору объектов и счётчиков операционной системы добавляются специфические объекты и счётчики сервера баз данных.
Потенциальные узкие места
Память
- Недостаток объема оперативной памяти, установленной на компьютере, оказывает негативное влияние на производительность всех компонент 1С:Предприятия 8 и Microsoft SQL Server.
- При увеличении количества пользователей и объема информационной базы требования к этому ресурсу со стороны сервера 1С:Предприятия 8 и Microsoft SQL Server возрастают.
- Нехватка памяти приводит к увеличению интенсивности страничного обмена между файлом подкачки и физической памятью, что существенно снижает производительность системы.
Процессоры
Дисковые операции
Конфликты блокировок Microsoft SQL Server
Идентификация узких мест
В таблице приведен перечень основных объектов и счетчиков, используемых при анализе проблем с производительностью.
| Объект | Основные счетчики | Описание | Основные признаки наличия проблемы | Варианты решения проблемы |
| Память | Memory \ Pages/sec | Характеризует интенсивность обмена между дисковой подсистемой и оперативной памятью. Обращение к дисковой системе происходит из-за того, что запрашиваемые страницы отсутствуют в оперативной памяти. | Нормальное значение этого счетчика должно быть близко к нулю. Увеличение показания этого счетчика свыше 20 страниц в секунду говорит о необходимости увеличения объема оперативной памяти. | |
| Процессор | Processor \ %Processor Time | Время, которое процессор тратит на выполнение полезной работы, в процентах от общего системного времени. | Если среднее значение величины утилизации процессора превышает 85%, значит, процессор – узкое место в системе. | |
| System \ Processor Queue Length | Длина очереди к процессору. | Если в течение длительного времени средняя длина очереди превышает значение 2, то это говорит о том, что процессор является узким местом. | ||
| Дисковая система | Physical Disk \ %Disk Time | Процент времени, которое диск был занят, обслуживая запросы чтения или записи. | Снижение утилизации процессоров сервера | |
| Physical Disk \ Avg. Disk Queue Length | Показывает эффективность работы дисковой подсистемы. Представляет собой среднюю длину очереди запросов к диску. | Увеличение очереди запросов к дисковой подсистеме | ||
| Сетевой интерфейс | Network Interface \ Bytes Total/sec | Скорость, с которой происходит получение или посылка байт через сетевой интерфейс | Значение этого счётчика не должно превышать 65% величины пропускной способности сетевого адаптера. | |
| Блокировки | SQL Server: Locks \ Lock Wait Time (ms) | Показывает общее время ожидания (в миллисекундах) выполнения запросов на блокировку за последнюю секунду | Среднее значение общего времени ожидания не должно превышать заданного времени отклика системы умноженного на количество активных пользователей |