Вопрос: Общие запросы проверки WQL


Какие WQL-запросы вы бы использовали для мониторинга типичных узких мест Windows? Что бы вы использовали для получения данных, похожих на «top» или «netstat»? На каком интервале вы бы опросили?

Вот несколько полезных советов.

SELECT PercentDiskTime, AvgDiskQueueLength, DiskReadBytesPerSec, DiskWriteBytesPerSec FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk

SELECT Caption, CommittedBytes, AvailableBytes, PercentCommittedBytesInUse, PagesPerSec, PageFaultsPerSec FROM Win32_PerfFormattedData_PerfOS_Memory

SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor

SELECT Caption, WorkingSet, PageFaultsPerSec,IOReadBytesPerSec, IOWriteBytesPerSec, ThreadCount, HandleCount FROM Win32_PerfFormattedData_PerfProc_Process

SELECT Caption, BytesReceivedPerSec, BytesSentPerSec FROM Win32_PerfFormattedData_Tcpip_NetworkInterface

12
2017-08-18 10:23


Источник


Это настоящий драгоценный камень. Спасибо! Отмеченный. - cstamas
Отличный материал, это полезно и для прикладных программистов. Большая часть этого материала недоступна напрямую через любой вызов Win32 API; WMI полезен, но не обсуждается так, как должно быть! - Andon M. Coleman


Ответы:


Это действительно большой вопрос, и стыдно, что он не получил больше любви!

Моя основная теория анализа узких мест - рассматривать систему как ящик с 4-мя видами конечных ресурсов: процессор, память, диск, а также сеть, Поэтому я хочу получить базовые номера для каждого из них, чтобы определить здоровье коробки. Я хочу цифры, которые легко интерпретировать: высокий - плохой, низкий - хороший. 0 лучше, хотя и никогда не достижимо (ведь мы купили компьютер для Выполнять работу, eh?). Как только я увижу, какой из четырех ресурсов является основным узким местом, я могу приступить к определению того, какая программа или процесс есть все ресурсы, и принять обоснованное решение о том, нужно ли мне увеличить этот ресурс - или настроить программу / процесс на использование меньше ресурса.

Я буду форматировать основные счетчики производительности, которые я использую, начиная с Эта статья, как запросы WMIC, потому что не требуется никаких сценариев (хотя это, безусловно, возможно!). Вы можете вводить каждый из этих запросов непосредственно в консоль cmd:

wmic path Win32_PerfFormattedData_PerfOS_System get ProcessorQueueLength

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

wmic path Win32_PerfFormattedData_PerfOS_Memory get PagesInputPerSec

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

wmic path Win32_PerfFormattedData_PerfDisk_PhysicalDisk get AvgDiskQueueLength, name

Выше PhysicalDisk, средняя длина очереди диска, Я считаю, что это ключевой показатель работоспособности системы, поскольку узкие места в памяти также приводят к потере диска из-за чрезмерной подкачки файлов подкачки, а также часто увеличивают загрузку процессора. Он покажет элемент для каждого смонтированного диска, а также всех дисков. Хорошо выполненный одиночный диск будет иметь это значение в 2 или ниже. Для массивов разделите количество шпинделей на длину очереди (например: 4 шпинделя в массиве, разделенные на длину очереди 8 = 2, что означает, что массив работает хорошо).

wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface get OutputQueueLength, PacketsReceivedErrors, Name, currentbandwidth

И, наконец, выше мы имеем производительность NIC. конкретно Сетевой интерфейс, длина очереди вывода а также Ошибки, вызванные пакетами, Эти два счетчика позволяют нам знать, сколько пакетов ожидает отправки, и сколько входящих пакетов вызвало ошибки, которые, вероятно, привели к повторным передачам. Мы хотим, чтобы оба числа оставались на нуле. В этом запросе я также получаю текущую пропускную способность NIC, которая является полезной информацией.

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


7



Спасибо за подробную рецензию. Я перешел на вики сообщества. Я думаю, что еще один аспект этого вопроса - интервалы опроса. Некоторые узкие места будут отображаться только кратко, другие могут быть отобраны с меньшей частотой. - Yancy
Ну, чаще всего ищут узкие места реактивно (поскольку некоторая проблема наблюдается), а не проактивно (просто наблюдая за узким местом). Однако в любом случае графики perfmon даже за несколько минут гораздо полезнее моментальных снимков момента времени. - quux