ลดความยุ่งยากในการใช้คลาวด์ พูดคุยกับเจ้าหน้าที่

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

วัดประสิทธิภาพ Windows Server ด้วย 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/

ผู้ให้บริการคลาวด์ไทย
เพื่อธุรกิจของคนไทย

"มุ่งมั่น" และ "มั่นคง"
พร้อมรับมือทุกการเติบโต
Trust Cloud
คลาว์ที่ปลอดภัย
คือรากฐานที่มั่นคง
cloud security