วัดประสิทธิภาพ 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/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี








