Pertanyaan Umum Pemantauan WQL


12

Pertanyaan WQL apa yang akan Anda gunakan untuk memantau kemacetan khas Windows? Yang mana yang akan Anda gunakan untuk mendapatkan data yang mirip dengan 'top' atau 'netstat'? Pada interval berapa Anda akan memilih?

Berikut adalah beberapa yang saya temukan bermanfaat.

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

Bagus sekali, ini juga berguna untuk programmer aplikasi. Banyak dari hal ini tidak tersedia secara langsung melalui panggilan API Win32 apa pun; WMI bermanfaat tetapi tidak dibahas sebanyak yang seharusnya!
Andon M. Coleman

Jawaban:


7

Ini adalah pertanyaan yang benar - benar hebat , dan itu memalukan karena belum mendapatkan lebih banyak cinta!

Teori dasar analisis bottleneck saya adalah memperlakukan sistem sebagai sebuah kotak dengan 4 jenis sumber daya terbatas: prosesor, memori, disk, dan jaringan . Jadi saya ingin mendapatkan angka dasar untuk masing-masing untuk menentukan kesehatan kotak. Saya ingin angka yang mudah diartikan: tinggi itu buruk, rendah itu baik. 0 adalah yang terbaik, meskipun tidak pernah dapat dicapai dengan sempurna (setelah semua kami membeli komputer untuk melakukan pekerjaan , eh?). Setelah saya melihat mana dari empat sumber daya yang merupakan hambatan utama, saya dapat melanjutkan untuk menentukan program atau proses mana yang memakan semua sumber daya, dan membuat keputusan berpendidikan, apakah saya perlu menambah sumber daya itu - atau menyesuaikan program / proses yang akan digunakan kurang dari sumber daya.

Saya akan memformat penghitung kinerja utama yang saya gunakan, dari artikel ini , sebagai kueri WMIC, karena tidak ada skrip yang diperlukan (walaupun tentu saja mungkin!). Anda dapat memasukkan setiap kueri ini langsung ke konsol cmd:

wmic path Win32_PerfFormattedData_PerfOS_System get ProcessorQueueLength

Di atas adalah Panjang Antrian Prosesor . Ini memberitahukan berapa banyak utas yang menunggu dalam antrian untuk ditangani oleh CPU. Angka tinggi buruk, angka rendah baik. Secara umum saya menganggap nilai <10 sebagai sistem yang sehat.

wmic path Win32_PerfFormattedData_PerfOS_Memory get PagesInputPerSec

Di atas adalah Memori, Input Halaman per Detik , kecepatan membaca halaman dari disk untuk menyelesaikan kesalahan halaman yang berat. Kesalahan halaman keras terjadi ketika suatu proses merujuk ke halaman dalam memori virtual yang tidak ada dalam memori fisik, dan harus diambil dari disk. Penghitung ini berfungsi paling baik dalam tampilan grafik Perfmon. Pada komputer yang sehat (bukan bottlenecked), Anda akan melihat paku sesekali saat data dibaca dari disk menjadi RAM semakin banyak paku yang Anda lihat, dan semakin tinggi lamanya, semakin banyak memori yang terkendala dalam sistem. Jika sistem sering berada pada nilai bukan nol untuk periode yang lebih lama dari, katakanlah, lima detik, Anda mungkin memiliki sistem bottlenecked memori.

wmic path Win32_PerfFormattedData_PerfDisk_PhysicalDisk get AvgDiskQueueLength, name

Di atas adalah PhysicalDisk, Panjang Antrian Disk Rata-rata . Saya menganggap ini sebagai indikator utama kesehatan sistem, karena kemacetan memori juga akan merobohkan disk karena swapping pagefile yang berlebihan - dan sering akan mendorong pemanfaatan CPU juga. Ini akan menampilkan item untuk setiap disk yang dipasang serta total semua disk. Disk tunggal yang berkinerja baik akan memiliki nilai ini pada 2 atau lebih rendah. Untuk array, bagi jumlah spindel dengan panjang antrian (mis: 4 spindle dalam array dibagi dengan panjang antrian 8 = 2, yang berarti array berkinerja baik).

wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface get OutputQueueLength, PacketsReceivedErrors, Name, currentbandwidth

Dan akhirnya, di atas kami memiliki kinerja NIC. Khususnya Antarmuka Jaringan, Panjang Antrian Output dan Paket - Paket yang Menerima Kesalahan . Kedua penghitung ini memberi tahu kami berapa banyak paket yang menunggu untuk dikirim, dan berapa banyak paket yang masuk menyebabkan kesalahan yang mungkin mengakibatkan pengiriman ulang. Kami ingin kedua angka tetap nol. Dalam permintaan ini saya juga mendapatkan bandwidth NIC saat ini yang merupakan informasi yang berguna.

Setelah saya menentukan sumber daya yang digunakan secara berlebihan, saya biasanya bergantung pada Process Explorer atau objek proses Perfmon untuk menemukan proses mana yang merupakan sumber daya babi.


Terima kasih telah menulis selengkapnya. Saya telah mengonversi ke wiki komunitas. Saya pikir segi lain dari pertanyaan ini adalah interval pemungutan suara. Beberapa kemacetan hanya akan muncul sebentar, yang lain mungkin disampel dengan frekuensi yang lebih sedikit.
Yancy

Yah, paling sering orang mencari kemacetan secara reaktif (karena beberapa masalah telah diamati) daripada secara proaktif (hanya waspada jika terjadi kemacetan). Namun dalam kedua kasus, grafik perfmon lebih dari beberapa menit jauh lebih berguna daripada snapshot point-in-time.
quux
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.