Các truy vấn giám sát WQL thường gặp


12

Những truy vấn WQL nào bạn sẽ sử dụng để theo dõi các tắc nghẽn điển hình của Windows? Bạn sẽ sử dụng dữ liệu nào để lấy dữ liệu tương tự như 'top' hoặc 'netstat'? Khoảng thời gian nào bạn sẽ thăm dò ý kiến?

Dưới đây là một vài điều mà tôi thấy hữu ích.

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

Tuyệt vời, điều này cũng hữu ích cho các lập trình viên ứng dụng. Phần lớn nội dung này không có sẵn trực tiếp thông qua bất kỳ lệnh gọi API Win32 nào; WMI hữu ích nhưng không được thảo luận nhiều như nó phải vậy!
Andon M. Coleman

Câu trả lời:


7

Đây là một câu hỏi thực sự tuyệt vời , và thật xấu hổ vì nó đã không nhận được nhiều tình yêu hơn!

Lý thuyết cơ bản của tôi về phân tích nút cổ chai là coi hệ thống như một hộp với 4 loại tài nguyên hữu hạn: bộ xử lý, bộ nhớ, đĩamạng . Vì vậy, tôi muốn lấy số cơ bản cho từng số này để xác định sức khỏe của hộp. Tôi muốn những con số dễ diễn giải: cao là xấu, thấp là tốt. 0 là tốt nhất, mặc dù không bao giờ hoàn toàn có thể đạt được (sau tất cả chúng tôi đã mua máy tính để làm việc , eh?). Khi tôi thấy tài nguyên nào trong bốn tài nguyên là nút cổ chai chính, tôi có thể tiến hành xác định chương trình hoặc quy trình nào đang ăn tất cả tài nguyên và đưa ra quyết định có giáo dục về việc tôi có cần tăng tài nguyên đó không - hoặc điều chỉnh chương trình / quy trình sử dụng ít tài nguyên

Tôi sẽ định dạng các bộ đếm hiệu suất chính mà tôi sử dụng, từ bài viết này , dưới dạng truy vấn WMIC, vì không yêu cầu kịch bản (mặc dù điều đó chắc chắn là có thể!). Bạn có thể nhập từng truy vấn này trực tiếp vào bảng điều khiển cmd:

wmic path Win32_PerfFormattedData_PerfOS_System get ProcessorQueueLength

Trên đây là chiều dài hàng đợi của bộ xử lý . Điều này cho biết có bao nhiêu luồng đang chờ trong hàng đợi để được CPU xử lý. Số cao xấu, số thấp tốt. Nói chung tôi coi giá trị <10 là một hệ thống lành mạnh.

wmic path Win32_PerfFormattedData_PerfOS_Memory get PagesInputPerSec

Trên đây là Bộ nhớ, Nhập trang mỗi giây , tốc độ đọc các trang từ đĩa để giải quyết các lỗi trang cứng. Lỗi trang cứng xảy ra khi một quá trình đề cập đến một trang trong bộ nhớ ảo không có trong bộ nhớ vật lý và phải được truy xuất từ ​​đĩa. Bộ đếm này hoạt động tốt nhất trong chế độ xem biểu đồ của Perfmon. Trên một máy tính khỏe mạnh (không bị tắc nghẽn), bạn sẽ thấy các đột biến thỉnh thoảng khi dữ liệu được đọc từ đĩa vào RAM càng nhiều gai bạn nhìn thấy, và chúng càng đi cao, hệ thống càng bị hạn chế bộ nhớ. Nếu hệ thống thường ở giá trị khác không trong thời gian dài hơn, giả sử, năm giây, bạn có thể có một hệ thống bị tắc nghẽn bộ nhớ.

wmic path Win32_PerfFormattedData_PerfDisk_PhysicalDisk get AvgDiskQueueLength, name

Trên đây là PhysDisk, Chiều dài hàng đợi đĩa trung bình . Tôi coi đây là chỉ số chính về sức khỏe hệ thống, vì các tắc nghẽn bộ nhớ cũng sẽ làm hỏng đĩa do hoán đổi trang quá nhiều - và cũng sẽ thường xuyên sử dụng CPU. Nó sẽ hiển thị một mục cho mỗi đĩa được gắn cũng như tổng cộng tất cả các đĩa. Một đĩa đơn hoạt động tốt sẽ có giá trị này ở mức 2 hoặc thấp hơn. Đối với mảng, chia số lượng trục xoay cho chiều dài hàng đợi (ví dụ: 4 trục xoay trong mảng chia cho chiều dài hàng đợi là 8 = 2, có nghĩa là mảng đang hoạt động tốt).

wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface get OutputQueueLength, PacketsReceivedErrors, Name, currentbandwidth

Và cuối cùng, ở trên chúng ta có hiệu suất NIC. Cụ thể là Giao diện mạng, Độ dài hàng đợi đầu ra và các gói nhận được lỗi . Hai bộ đếm này cho chúng tôi biết có bao nhiêu gói đang chờ được gửi và có bao nhiêu gói gửi đến gây ra lỗi có thể dẫn đến truyền lại. Chúng tôi muốn cả hai số ở mức 0. Trong truy vấn này, tôi cũng nhận được băng thông hiện tại của NIC là thông tin hữu ích.

Khi tôi đã xác định tài nguyên nào được sử dụng quá mức, tôi thường phụ thuộc vào đối tượng quy trình của Process Explorer hoặc Perfmon để khám phá quy trình nào là tài nguyên hog.


Cảm ơn đã viết chi tiết. Tôi đã chuyển đổi sang wiki cộng đồng. Tôi nghĩ rằng một khía cạnh khác của câu hỏi này là khoảng thời gian bỏ phiếu. Một số nút thắt sẽ chỉ xuất hiện trong thời gian ngắn, một số khác có thể được lấy mẫu với tần suất ít hơn.
Yancy

Chà, hầu hết mọi người thường tìm kiếm các nút cổ chai một cách phản ứng (vì một số vấn đề đã được quan sát) thay vì chủ động (chỉ cần cảnh giác trong trường hợp tắc nghẽn). Tuy nhiên, trong cả hai trường hợp, đồ thị perfmon trong vài phút thậm chí còn hữu ích hơn nhiều so với ảnh chụp nhanh theo thời gian.
quux
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.