วัดประสิทธิภาพ Windows Server ด้วย Performance Monitor

ตั้ง Data Collector Set เก็บข้อมูลย้อนหลัง แล้วอ่านตัวนับที่บอกได้จริงว่าคอขวดอยู่ที่ CPU หน่วยความจำ ดิสก์ หรือเครือข่าย

โดย ทีมงาน THAI DATA CLOUD อัปเดต อ่าน 9 นาที เข้าชม 7 ครั้ง

แชร์FacebookXLINELinkedIn
Performance Monitor — วัดประสิทธิภาพ Windows Server ด้วย Performance Monitor
วัดประสิทธิภาพ Windows Server ด้วย Performance Monitor

คำตอบสั้น ๆ: ตั้ง Data Collector Set เก็บข้อมูลย้อนหลัง แล้วอ่านตัวนับที่บอกได้จริงว่าคอขวดอยู่ที่ CPU หน่วยความจำ ดิสก์ หรือเครือข่าย

คู่มือนี้อธิบาย Performance Monitor ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย

เมื่อผู้ใช้แจ้งว่าระบบช้าเมื่อวานตอนบ่าย การเปิด Task Manager ดูตอนนี้ไม่ช่วยอะไร สิ่งที่ต้องมีคือข้อมูลที่เก็บไว้ตลอดเวลาเพื่อย้อนดูได้ Performance Monitor ทำได้และมีอยู่ใน Windows Server ทุกเครื่องโดยไม่ต้องติดตั้งเพิ่ม

คู่มือนี้ตั้งระบบเก็บข้อมูลอัตโนมัติ แล้วอธิบายตัวนับที่มีความหมายจริง พร้อมเกณฑ์ตัดสินว่าค่าเท่าไรถือว่าผิดปกติ ซึ่งเป็นส่วนที่หาคำตอบได้ยากที่สุด

สิ่งที่ต้องเตรียม

  • Windows Server และสิทธิ์ Administrator
  • พื้นที่ดิสก์สำหรับเก็บข้อมูล ประมาณ 1-2 GB ต่อเดือน

ขั้นตอนที่ 1: ดูค่าปัจจุบันอย่างเร็ว

Get-Counter '\Processor(_Total)\% Processor Time'
Get-Counter '\Memory\Available MBytes'
Get-Counter '\PhysicalDisk(_Total)\Avg. Disk sec/Read'

# เก็บตัวอย่างต่อเนื่อง
Get-Counter -Counter '\Processor(_Total)\% Processor Time',
                     '\Memory\Available MBytes',
                     '\PhysicalDisk(_Total)\Avg. Disk sec/Transfer' `
            -SampleInterval 2 -MaxSamples 30

ขั้นตอนที่ 2: ตัวนับที่ควรดูและเกณฑ์ตัดสิน

CPU

  • \Processor(_Total)\% Processor Time เกิน 85% ต่อเนื่องเกิน 10 นาทีถือว่าตึง
  • \System\Processor Queue Length เกินจำนวนคอร์คูณสองถือว่ามีงานรอคิว
  • \Processor(_Total)\% Privileged Time เกิน 25% แปลว่าเวลาหมดไปกับงานของเคอร์เนล มักเกี่ยวกับไดรเวอร์หรือเครือข่าย

หน่วยความจำ

  • \Memory\Available MBytes ควรเหลือมากกว่า 10% ของ RAM ทั้งหมด
  • \Memory\Pages/sec เกิน 1000 ต่อเนื่องคือสัญญาณว่าหน่วยความจำไม่พอ
  • \Paging File(_Total)\% Usage เกิน 70% ควรเพิ่ม RAM

ดิสก์ ซึ่งมักเป็นคอขวดที่แท้จริง

  • \PhysicalDisk(_Total)\Avg. Disk sec/Read บน SSD ควรต่ำกว่า 0.010 วินาที ถ้าเกิน 0.025 คือช้าผิดปกติ
  • \PhysicalDisk(_Total)\Avg. Disk sec/Write เกณฑ์เดียวกัน
  • \PhysicalDisk(_Total)\Current Disk Queue Length เกิน 2 ต่อดิสก์หนึ่งใบคือมีคิวสะสม

เครือข่าย

  • \Network Interface(*)\Bytes Total/sec เทียบกับความเร็วการ์ด เกิน 70% ควรพิจารณาเพิ่ม
  • \Network Interface(*)\Output Queue Length ควรเป็น 0 ตลอด

ขั้นตอนที่ 3: สร้าง Data Collector Set

$counters = @(
  '\Processor(_Total)\% Processor Time'
  '\Processor(_Total)\% Privileged Time'
  '\System\Processor Queue Length'
  '\Memory\Available MBytes'
  '\Memory\Pages/sec'
  '\Paging File(_Total)\% Usage'
  '\PhysicalDisk(_Total)\Avg. Disk sec/Read'
  '\PhysicalDisk(_Total)\Avg. Disk sec/Write'
  '\PhysicalDisk(_Total)\Current Disk Queue Length'
  '\Network Interface(*)\Bytes Total/sec'
  '\LogicalDisk(C:)\% Free Space'
)

$counters | Out-File C:\PerfLogs\counters.txt -Encoding ASCII

logman create counter "TDC-Baseline" `
  -cf C:\PerfLogs\counters.txt `
  -si 00:00:15 `
  -o "C:\PerfLogs\TDC-Baseline" `
  -f bincirc -max 500 `
  -v mmddhhmm

logman start "TDC-Baseline"
logman query "TDC-Baseline"

ตัวเลือก -f bincirc -max 500 คือเขียนวนทับเมื่อไฟล์ถึง 500 MB ทำให้ดิสก์ไม่เต็มแม้เก็บต่อเนื่องเป็นเดือน และ -si 00:00:15 คือเก็บตัวอย่างทุก 15 วินาที ซึ่งละเอียดพอสำหรับงานทั่วไปโดยไม่กินทรัพยากรมาก

ตั้งให้เริ่มเองทุกครั้งที่บูต

$action  = New-ScheduledTaskAction -Execute 'logman.exe' -Argument 'start "TDC-Baseline"'
$trigger = New-ScheduledTaskTrigger -AtStartup
Register-ScheduledTask -TaskName "Start PerfMon Baseline" -Action $action `
  -Trigger $trigger -User "SYSTEM" -RunLevel Highest

ขั้นตอนที่ 4: อ่านข้อมูลย้อนหลัง

# แปลงเป็น CSV เพื่อเปิดใน Excel
relog "C:\PerfLogs\TDC-Baseline\*.blg" -f CSV -o C:\PerfLogs\report.csv

# ดึงเฉพาะช่วงเวลาที่มีปัญหา
relog "C:\PerfLogs\TDC-Baseline\*.blg" -b "24/09/2026 13:00:00" -e "24/09/2026 15:00:00" `
  -f CSV -o C:\PerfLogs\incident.csv

# ดึงเฉพาะตัวนับที่สนใจ
relog "C:\PerfLogs\TDC-Baseline\*.blg" -c "\Processor(_Total)\% Processor Time" `
  -f CSV -o C:\PerfLogs\cpu.csv

อ่านด้วย PowerShell โดยตรงก็ได้

$data = Import-Counter "C:\PerfLogs\TDC-Baseline\*.blg"
$data.CounterSamples |
  Where-Object Path -like "*% Processor Time*" |
  Measure-Object CookedValue -Average -Maximum

ขั้นตอนที่ 5: ใช้หน้าจอ Performance Monitor

กด Windows + R พิมพ์ perfmon เลือก Performance Monitor ทางซ้าย กดเครื่องหมายบวกเพื่อเพิ่มตัวนับ

เคล็ดลับที่ช่วยได้มาก คลิกขวาเลือก Properties แล้วแท็บ Graph ตั้งค่า Maximum ให้เหมาะกับหน่วยของตัวนับนั้น เพราะค่าเริ่มต้นคือ 100 ซึ่งทำให้ตัวนับที่มีค่าน้อยมาก เช่น Avg. Disk sec/Read มองไม่เห็นเลย

เปิดไฟล์ที่เก็บไว้ด้วยการเลือกไอคอนรูปฐานข้อมูลแล้วชี้ไปที่ไฟล์ .blg

ขั้นตอนที่ 6: เก็บข้อมูลเฉพาะตอนเกิดปัญหา

ตั้งให้เริ่มเก็บข้อมูลละเอียดอัตโนมัติเมื่อค่าเกินเกณฑ์

logman create alert "CPU-Alert" `
  -c "\Processor(_Total)\% Processor Time" `
  -th 90 `
  -si 00:00:30 `
  --v `
  -m "TDC-Detailed"
logman start "CPU-Alert"

วิธีนี้ทำให้ได้ข้อมูลละเอียดเฉพาะช่วงที่มีปัญหาจริง โดยไม่ต้องเก็บละเอียดตลอดเวลา

ขั้นตอนที่ 7: สรุปให้เป็นข้อสรุป

เมื่อมีข้อมูลแล้ว ให้สรุปตามตารางนี้

  • CPU สูง แต่ดิสก์และหน่วยความจำปกติ ⟶ หาโปรเซสที่กินด้วย Get-Process | Sort CPU -Desc อาจต้องเพิ่มคอร์หรือแก้โค้ด
  • Available MBytes ต่ำ และ Pages/sec สูง ⟶ หน่วยความจำไม่พอ เพิ่ม RAM
  • Avg. Disk sec สูง และ Queue Length สูง ⟶ ดิสก์เป็นคอขวด ย้ายไป SSD ที่เร็วขึ้นหรือลดภาระการเขียน
  • ทุกอย่างปกติแต่ช้า ⟶ ปัญหาอยู่ที่แอปหรือปลายทางภายนอก ตรวจ Log ของแอปและเวลาตอบสนองของ API ที่เรียกใช้

ปัญหาที่พบบ่อย

Data Collector Set หยุดเองหลังรีสตาร์ต

ตั้ง Scheduled Task ให้เริ่มตอนบูตตามขั้นตอนที่ 3 หรือแก้คุณสมบัติของ Collector Set ให้ตั้งเป็น Start automatically

ไฟล์ .blg โตเร็วมาก

ลดจำนวนตัวนับลง เพิ่มระยะห่างระหว่างตัวอย่างเป็น 30 หรือ 60 วินาที และใช้ -f bincirc พร้อม -max เพื่อจำกัดขนาด

ตัวนับบางตัวหายไป

Performance Counter อาจเสียหาย ซ่อมด้วย lodctr /R แล้วรีสตาร์ตบริการ Performance Logs and Alerts

ค่าที่อ่านได้ดูแปลกไปจากที่คาด

ตัวนับบางตัวเป็นค่าเฉลี่ยตั้งแต่บูตเครื่อง ไม่ใช่ค่าปัจจุบัน และตัวนับที่เป็นเปอร์เซ็นต์บนเครื่องหลายคอร์อาจเกิน 100 ได้หากไม่ได้ดูที่ _Total ตรวจคำอธิบายของตัวนับด้วยปุ่ม Show description ในหน้าต่างเพิ่มตัวนับ

ต้องการให้ทีมวิศวกรช่วยวิเคราะห์ประสิทธิภาพระบบของคุณ ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/

สรุปขั้นตอน Performance Monitor

ทบทวน Performance Monitor ทั้งหมดตามลำดับ ก่อนนำไปใช้กับระบบจริง

  1. ดูค่าปัจจุบันอย่างเร็ว
  2. ตัวนับที่ควรดูและเกณฑ์ตัดสิน
  3. สร้าง Data Collector Set
  4. อ่านข้อมูลย้อนหลัง
  5. ใช้หน้าจอ Performance Monitor
  6. เก็บข้อมูลเฉพาะตอนเกิดปัญหา
  7. สรุปให้เป็นข้อสรุป

เมื่อทำครบทุกข้อแล้ว Performance Monitor จะพร้อมใช้งาน หากผลลัพธ์ไม่เป็นไปตามที่คาด ให้ย้อนกลับไปดูหัวข้อปัญหาที่พบบ่อยด้านบน ซึ่งรวบรวมกรณีที่พบจริงจากการใช้งาน Performance Monitor ไว้แล้ว

อ่านเพิ่มเติมเกี่ยวกับ Performance Monitor

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน