ตรวจสอบ CPU, RAM และดิสก์บน Windows Server
เมื่อ Windows Server ตอบสนองช้า Remote Desktop หน่วง หรือเว็บบน IIS โหลดนาน สาเหตุส่วนใหญ่มาจากทรัพยากรตัวใดตัวหนึ่งเต็ม ได้แก่ CPU, RAM, ดิสก์ (ทั้งพื้นที่และความเร็วอ่านเขียน) หรือเครือข่าย การรู้ว่าตัวไหนเป็นคอขวดและโปรเซสใดเป็นต้นเหตุ ช่วยให้แก้ได้ตรงจุดแทนการรีสตาร์ทเครื่องไปเรื่อยๆ
บทความนี้แนะนำเครื่องมือที่มีอยู่แล้วใน Windows Server 2019 และ 2022 ตั้งแต่ดูภาพรวมอย่างเร็วไปจนถึงเก็บข้อมูลย้อนหลัง พร้อมคำสั่ง PowerShell ที่ใช้ได้บน Server Core ซึ่งไม่มีหน้าจอกราฟิก
สิ่งที่ต้องเตรียม
- เข้าเครื่องผ่าน Remote Desktop ด้วยบัญชีในกลุ่ม Administrators (บัญชีทั่วไปจะเห็นเฉพาะโปรเซสของตัวเอง)
- PowerShell 5.1 ที่มากับระบบ
- ถ้าเครื่องช้ามากจนเปิดหน้าจอไม่ได้ ให้เข้าผ่าน Console ตามบทความ การ Remote เข้า Console Server ผ่าน Web UI
ขั้นตอนที่ 1: ดูภาพรวมด้วย Task Manager
กด Ctrl + Shift + Esc (ใช้ได้ทั้งในเครื่องและใน Remote Desktop) หรือคลิกขวาที่ Taskbar แล้วเลือก Task Manager ถ้าเห็นหน้าต่างเล็กให้กด More details
- แท็บ Processes: คลิกหัวคอลัมน์ CPU, Memory หรือ Disk เพื่อเรียงจากมากไปน้อย จะเห็นทันทีว่าโปรแกรมใดใช้ทรัพยากรสูง
- แท็บ Performance: กราฟ CPU, Memory, Disk และ Ethernet แยกตัว ดูค่า Utilization และ Up time ได้ที่นี่
- แท็บ Details: แสดงชื่อไฟล์จริงของโปรเซสและ PID คลิกขวาที่หัวคอลัมน์ แล้วเลือก Select columns เพื่อเพิ่มคอลัมน์ Command line ช่วยแยกว่า
w3wp.exeแต่ละตัวเป็นของ Application Pool ใด - แท็บ Users: ดูว่าผู้ใช้ Remote Desktop แต่ละคนใช้ทรัพยากรเท่าไร
ขั้นตอนที่ 2: เจาะลึกด้วย Resource Monitor
กด Win + R พิมพ์ resmon แล้ว Enter หรือกด Open Resource Monitor ที่ด้านล่างของแท็บ Performance ใน Task Manager
- แท็บ Disk: ส่วน Disk Activity บอกว่าไฟล์ใดถูกอ่านเขียนมากที่สุด ส่วน Storage แสดง Active Time และ Disk Queue Length ถ้า Active Time อยู่ที่ 100% ต่อเนื่อง แปลว่าดิสก์เป็นคอขวด
- แท็บ Memory: แถบสีด้านล่างแยก In Use, Modified, Standby และ Free ค่า Hard Faults/sec สูงต่อเนื่องหมายถึงระบบต้องอ่านข้อมูลจาก Page File บ่อย RAM ไม่พอ
- แท็บ Network: ดูโปรเซสที่รับส่งข้อมูลมาก และส่วน TCP Connections บอก IP ปลายทางที่เชื่อมต่ออยู่
- แท็บ CPU: ติ๊กโปรเซสที่สงสัย แล้วดูส่วน Services และ Associated Handles เพื่อรู้ว่าโปรเซสนั้นเปิดไฟล์ใดอยู่
ขั้นตอนที่ 3: ตรวจด้วย PowerShell
คำสั่งต่อไปนี้ใช้ได้ทั้งเครื่องที่มีหน้าจอและ Server Core เปิด PowerShell แบบ Run as Administrator
ดูการใช้ CPU รวม 5 ครั้ง ห่างกันครั้งละ 2 วินาที
Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval 2 -MaxSamples 5
ค่าที่ได้เป็นเปอร์เซ็นต์ของทุก Core รวมกัน ถ้าอยู่เหนือ 85-90 ตลอดแปลว่า CPU ไม่พอ
10 โปรเซสที่ใช้ RAM มากที่สุด (หน่วย MB)
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10 Name, Id, @{n='RAM_MB';e={[math]::Round($_.WorkingSet64/1MB)}}
10 โปรเซสที่ใช้เวลา CPU สะสมมากที่สุดตั้งแต่เริ่มทำงาน
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, Id, CPU
คอลัมน์ CPU ของคำสั่งนี้เป็นวินาทีสะสม ไม่ใช่เปอร์เซ็นต์ปัจจุบัน ถ้าต้องการค่าปัจจุบันรายโปรเซส ใช้
Get-Counter '\Process(*)\% Processor Time' | Select-Object -ExpandProperty CounterSamples | Where-Object {$_.InstanceName -notin '_total','idle'} | Sort-Object CookedValue -Descending | Select-Object -First 10 InstanceName, CookedValue
ค่า CookedValue นับเต็ม 100 ต่อหนึ่ง Core เครื่อง 4 Core จึงมีค่าสูงสุดได้ถึง 400
ดู RAM ทั้งหมดและที่เหลือ (หน่วย GB)
Get-CimInstance Win32_OperatingSystem | Select-Object @{n='Total_GB';e={[math]::Round($_.TotalVisibleMemorySize/1MB,1)}}, @{n='Free_GB';e={[math]::Round($_.FreePhysicalMemory/1MB,1)}}
ดูพื้นที่ดิสก์ทุกไดรฟ์
Get-Volume | Where-Object DriveLetter | Select-Object DriveLetter, FileSystemLabel, @{n='Size_GB';e={[math]::Round($_.Size/1GB,1)}}, @{n='Free_GB';e={[math]::Round($_.SizeRemaining/1GB,1)}}
หาโฟลเดอร์ที่กินพื้นที่มากที่สุดในระดับแรกของไดรฟ์ C: (อาจใช้เวลาหลายนาทีบนดิสก์ใหญ่)
Get-ChildItem C:\ -Directory -Force -ErrorAction SilentlyContinue | ForEach-Object { $s = (Get-ChildItem $_.FullName -Recurse -File -Force -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum; [pscustomobject]@{Folder=$_.FullName; GB=[math]::Round($s/1GB,2)} } | Sort-Object GB -Descending
ขั้นตอนที่ 4: เก็บข้อมูลย้อนหลังด้วย Performance Monitor
ปัญหาที่เกิดตอนกลางคืนหรือเป็นช่วงๆ ดูสดไม่ทัน ต้องเก็บข้อมูลไว้ก่อน
- กด Win + R พิมพ์
perfmon - ไปที่ Data Collector Sets > User Defined คลิกขวา New > Data Collector Set
- ตั้งชื่อ เช่น
Baselineเลือก Create manually (Advanced) แล้วติ๊ก Performance counter - กด Add แล้วเพิ่ม Counter เหล่านี้:
Processor(_Total)\% Processor Time,Memory\Available MBytes,Memory\Pages/sec,LogicalDisk(_Total)\% Free Space,PhysicalDisk(_Total)\Avg. Disk sec/Transfer - ตั้ง Sample interval เป็น 15 วินาที แล้วกด Finish
- คลิกขวาที่ Collector Set ที่สร้าง เลือก Start เมื่อต้องการดูผล ไปที่ Reports > User Defined
อย่าลืมกด Stop เมื่อเก็บพอแล้ว เพราะไฟล์ผลลัพธ์จะโตขึ้นเรื่อยๆ ในโฟลเดอร์ C:\PerfLogs
ตรวจสอบผลลัพธ์
เทียบค่าที่วัดได้กับเกณฑ์คร่าวๆ ด้านล่าง ซึ่งใช้เป็นจุดเริ่มต้นได้กับเซิร์ฟเวอร์ทั่วไป
| ตัวชี้วัด | ปกติ | ควรตรวจสอบ |
|---|---|---|
| % Processor Time | ต่ำกว่า 70% โดยเฉลี่ย | สูงกว่า 85% ต่อเนื่องหลายนาที |
| Memory\Available MBytes | เหลือมากกว่า 10% ของ RAM | ต่ำกว่า 500 MB |
| Avg. Disk sec/Transfer | ต่ำกว่า 0.010 (10 ms) | สูงกว่า 0.025 (25 ms) ต่อเนื่อง |
| พื้นที่ว่างไดรฟ์ C: | มากกว่า 20% | ต่ำกว่า 10% หรือไม่ถึง 10 GB |
เมื่อรู้ตัวต้นเหตุแล้ว ให้แก้ที่โปรแกรมนั้น แล้ววัดซ้ำด้วยคำสั่งเดิม ค่าต้องลดลงอย่างชัดเจน
ปัญหาที่พบบ่อย
TiWorker.exe หรือ Windows Modules Installer ใช้ CPU สูง
เกิดขณะ Windows Update ติดตั้งหรือเตรียมอัปเดต มักหายไปเองเมื่อเสร็จ ไม่ควรฆ่าโปรเซสนี้กลางคัน ถ้าเกิดบ่อยในเวลาทำงาน ให้กำหนดช่วงเวลาอัปเดตตามบทความ อัปเดต Windows Server ผ่าน Windows Update และ sconfig
MsMpEng.exe (Antimalware Service Executable) ใช้ CPU และดิสก์สูง
Microsoft Defender กำลังสแกน ถ้าเป็นโฟลเดอร์ฐานข้อมูลหรือ Log ที่เขียนตลอดเวลา สามารถเพิ่ม Exclusion เฉพาะโฟลเดอร์นั้นได้ แต่ทำเท่าที่จำเป็น เพราะโฟลเดอร์ที่ยกเว้นจะไม่ถูกตรวจมัลแวร์
sqlservr.exe ใช้ RAM เกือบหมด
เป็นพฤติกรรมปกติของ SQL Server ที่จองหน่วยความจำไว้เป็น Cache ให้กำหนด Maximum server memory ใน SQL Server Management Studio (คลิกขวาที่ Server > Properties > Memory) เหลือไว้ให้ระบบปฏิบัติการอย่างน้อย 2-4 GB
ไดรฟ์ C: เต็มเพราะโฟลเดอร์ WinSxS
ห้ามลบไฟล์ใน C:\Windows\WinSxS ด้วยมือ ให้สั่งล้าง Component ที่ไม่ใช้แล้วด้วยคำสั่ง
Dism /Online /Cleanup-Image /StartComponentCleanup
นอกจากนี้ให้ตรวจโฟลเดอร์ Log ของ IIS (C:\inetpub\logs\LogFiles) ซึ่งโตขึ้นทุกวันถ้าไม่ได้ตั้งลบ หากลบแล้วพื้นที่ยังไม่พอ ควรขยายดิสก์ตามบทความ การขยายพื้นที่ Partition หลังเพิ่มพื้นที่ Disk Space (Windows Server)
หากทำตามขั้นตอนแล้วยังติดปัญหา สามารถติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/ โดยแจ้งชื่อเซิร์ฟเวอร์ ขั้นตอนที่ทำไปแล้ว และข้อความ Error ที่พบ เพื่อให้ทีมงานตรวจสอบได้เร็วขึ้น
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- 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
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


