Khắc Phục Tình Trạng CPU 100% Trên Windows Server
Giới Thiệu
Tình trạng CPU của Windows Server đạt 100% là một dấu hiệu đáng báo động, cho thấy hệ thống đang gặp phải vấn đề nghiêm trọng về hiệu suất. Khi CPU bị quá tải, server sẽ trở nên chậm chạp, không phản hồi hoặc thậm chí là treo, ảnh hưởng trực tiếp đến các dịch vụ và ứng dụng đang chạy trên đó. Bài viết này sẽ hướng dẫn bạn cách xác định nguyên nhân và các bước khắc phục hiệu quả để đưa server của bạn trở lại trạng thái hoạt động bình thường.
📋 Thời gian: 30-60 phút | Độ khó: Trung bình
Yêu Cầu
Để thực hiện các bước trong hướng dẫn này, bạn cần có:
- Quyền truy cập quản trị (Administrator) trên Windows Server bị ảnh hưởng.
- Kiến thức cơ bản về quản lý và vận hành Windows Server.
- Kết nối RDP hoặc truy cập vật lý đến server.
Các Bước Thực Hiện
Bước 1: Xác định Tiến trình Gây ra CPU Cao
Bước đầu tiên và quan trọng nhất là xác định thủ phạm chính đang tiêu thụ tài nguyên CPU.
-
Mở Task Manager:
- Nhấn
Ctrl + Shift + EschoặcCtrl + Alt + Delvà chọn "Task Manager". - Chuyển đến tab "Processes" hoặc "Details".
- Nhấn
-
Sắp xếp theo cột CPU:
- Nhấp vào cột "CPU" để sắp xếp các tiến trình theo mức độ sử dụng CPU từ cao xuống thấp.
- Quan sát xem tiến trình nào đang chiếm dụng phần lớn tài nguyên CPU.
-
Phân tích tiến trình:
- Ứng dụng hoặc Dịch vụ cụ thể: Nếu một ứng dững (ví dụ: SQL Server, IIS Worker Process) hoặc dịch vụ (ví dụ: Windows Update, Antivirus) đang chiếm CPU, bạn đã tìm thấy nghi phạm chính.
- System hoặc System Idle Process:
- Nếu "System" process chiếm CPU cao, thường liên quan đến driver, phần cứng hoặc lỗi kernel.
- Nếu "System Idle Process" chiếm 90-99% CPU, điều này hoàn toàn bình thường, nó chỉ ra lượng CPU trống còn lại.
- svchost.exe: Nếu nhiều tiến trình
svchost.exeđang chạy và một trong số chúng chiếm CPU cao, bạn cần tìm hiểu sâu hơn dịch vụ nào đang chạy bên trong `svchost.exe đó.💡 Tip: Ghi lại PID (Process ID) của tiến trình gây lỗi để tham khảo thêm.# Mở Command Prompt với quyền Administrator
# Liệt kê các dịch vụ chạy bên trong mỗi tiến trình svchost.exe
tasklist /svc /fi "imagename eq svchost.exe"
-
Sử dụng PowerShell để xem các tiến trình hàng đầu:
# Mở PowerShell với quyền Administrator
# Hiển thị 10 tiến trình hàng đầu theo mức độ sử dụng CPU
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, CPU, WorkingSet, Id
Bước 2: Phân tích Nguyên nhân Gây ra CPU Cao
Sau khi xác định được tiến trình, hãy xem xét các nguyên nhân phổ biến sau:
- Lỗi Ứng dụng/Dịch vụ: Ứng dụng bị lỗi, vòng lặp vô hạn, cấu hình sai, hoặc tải quá cao.
- Driver Lỗi thời/Xung đột: Driver mạng, lưu trữ hoặc các thiết bị khác có thể gây ra lỗi kernel và chiếm CPU.
- Windows Update: Quá trình kiểm tra, tải xuống hoặc cài đặt bản cập nhật có thể chiếm CPU cao tạm thời hoặc bị kẹt.
- Phần mềm độc hại (Malware): Virus, trojan, đặc biệt là các phần mềm đào tiền ảo (cryptominers), có thể chiếm dụng CPU.
- Thiết lập Nguồn điện (Power Plan): Nếu server không được đặt ở chế độ "High Performance", có thể ảnh hưởng đến hiệu suất CPU.
- Lỗi Phần cứng: CPU quá nóng, RAM bị lỗi (hiếm gặp nhưng có thể xảy ra).
- Cấu hình Server: Server có thể bị thiếu tài nguyên (CPU, RAM) cho khối lượng công việc hiện tại.
Bước 3: Thực hiện các Biện pháp Khắc phục
Dựa trên nguyên nhân đã phân tích, hãy áp dụng các giải pháp sau:
-
Khởi động lại Tiến trình/Dịch vụ: Nếu tiến trình gây lỗi là một ứng dụng hoặc dịch vụ không quan trọng, hãy thử khởi động lại nó.
# Để kết thúc một tiến trình bằng PID
taskkill /PID <PID_của_tiến_trình> /F
# Để khởi động lại một dịch vụ
net stop <tên_service>
net start <tên_service>⚠️ Cảnh báo: Chỉ thực hiện nếu bạn chắc chắn về tiến trình và ảnh hưởng của nó. Khởi động lại các dịch vụ hệ thống quan trọng có thể gây mất ổn định.
-
Cập nhật Driver: Driver lỗi thời hoặc bị hỏng là nguyên nhân phổ biến của lỗi "System" CPU cao.
- Mở Device Manager (
devmgmt.msc). - Kiểm tra các thiết bị có dấu chấm than màu vàng.
- Cập nhật driver cho NIC (card mạng), Storage Controller (bộ điều khiển lưu trữ), và Chipset từ trang web của nhà sản xuất server hoặc phần cứng.
# Liệt kê các driver đã cài đặt
pnputil /enum-drivers - Mở Device Manager (
-
Kiểm tra và Quản lý Windows Update:
- Mở "Settings" -> "Update & Security" -> "Windows Update".
- Kiểm tra xem có bản cập nhật nào đang bị kẹt hoặc gây lỗi không.
- Nếu Windows Update Services đang chiếm CPU, bạn có thể tạm dừng nó (nhưng hãy đảm bảo cập nhật sau này).
# Tạm dừng dịch vụ Windows Update
net stop wuauserv
# Để khởi động lại
net start wuauserv -
Quét Phần mềm độc hại: Sử dụng phần mềm diệt virus hoặc anti-malware đáng tin cậy (ví dụ: Windows Defender, Malwarebytes) để quét toàn bộ server.
# Mở Windows Security (tùy thuộc vào phiên bản Windows Server)
# Hoặc sử dụng công cụ quét từ dòng lệnh nếu có (ví dụ: MsMpEng.exe cho Windows Defender)✅ Success: Nếu tìm thấy và loại bỏ được malware, CPU sẽ giảm xuống.
-
Điều chỉnh Kế hoạch Nguồn điện (Power Plan): Đảm bảo server đang chạy ở chế độ "High Performance".
- Mở "Control Panel" -> "Hardware and Sound" -> "Power Options".
- Chọn "High Performance".
# Liệt kê các kế hoạch nguồn điện
powercfg /list
# Đặt kế hoạch nguồn điện thành High Performance (thay thế GUID bằng GUID của High Performance)
powercfg /setactive <GUID_của_High_Performance> -
Kiểm tra Log Sự kiện (Event Viewer):
- Mở Event Viewer (
eventvwr.msc). - Kiểm tra các log "System" và "Application" để tìm kiếm lỗi hoặc cảnh báo xuất hiện xung quanh thời điểm CPU cao. Các lỗi này có thể chỉ ra nguyên nhân gốc rễ.
- Mở Event Viewer (
-
Giảm tải hoặc Tối ưu hóa Ứng dụng: Nếu một ứng dụng cụ thể đang gây ra CPU cao, bạn cần:
- Kiểm tra cấu hình của ứng dụng.
- Tối ưu hóa mã nguồn hoặc truy vấn cơ sở dữ liệu (nếu là ứng dụng web/DB).
- Cân nhắc nâng cấp phần cứng hoặc phân tải công việc sang server khác nếu khối lượng công việc vượt quá khả năng của server hiện tại.
Troubleshooting
- Không thể xác định tiến trình gây lỗi: Đôi khi phần mềm độc hại hoặc các lỗi kernel cấp thấp có thể che giấu tiến trình.
- 💡 Giải pháp: Sử dụng các công cụ mạnh mẽ hơn như Process Explorer từ Sysinternals (Microsoft) để có cái nhìn sâu hơn về các tiến trình và luồng.
- CPU 100% do "System" process và không giảm:
- ⚠️ Nguyên nhân: Thường là do driver bị lỗi (đặc biệt là driver mạng hoặc lưu trữ) hoặc li kernel.
- 💡 Giải pháp: Cập nhật hoặc quay lại phiên bản driver cũ. Chạy
sfc /scannowđể kiểm tra và sửa chữa các file hệ thống bị hỏng.
- Server không phản hồi hoàn toàn:
- ⚠️ Nguyên nhân: CPU bị kẹt ở 100% và không thể xử lý thêm yêu cầu.
- 💡 Giải pháp: Buộc khởi động lại server. Sau đó, kiểm tra Event Viewer và các log khác ngay lập tức để tìm kiếm nguyên nhân trước khi server lại bị quá tải.
- Vấn đề chỉ xảy ra định kỳ:
- 💡 Giải pháp: Sử dụng Performance Monitor (
perfmon.msc) để giám sát các chỉ số CPU, RAM, Disk, Network theo thời gian. Điều này giúp xác định các mẫu sử dụng CPU cao và liên kết chúng với các sự kiện hoặc công việc theo lịch trình.
- 💡 Giải pháp: Sử dụng Performance Monitor (
Kết Luận
Khắc phục tình trạng CPU 100% trên Windows Server đòi hỏi một cách tiếp cận có hệ thống để xác định và giải quyết nguyên nhân gốc rễ. Bằng cách sử dụng Task Manager, Event Viewer, và các công cụ khác, bạn có thể chẩn đoán và áp dụng các biện pháp khắc phục phù hợp.
✅ Best Practices:
- Giám sát định kỳ: Thường xuyên kiểm tra hiệu sut server bằng các công cụ giám sát.
- Cập nhật hệ thống: Duy trì hệ điều hành và driver luôn được cập nhật.
- Kiểm tra log: Đọc Event Viewer thường xuyên để phát hiện sớm các vấn đề.
- Bảo mật: Sử dụng phần mềm diệt virus và anti-malware đáng tin cậy.
- Tối ưu hóa ứng dụng: Đảm bảo các ứng dụng và dịch vụ được cấu hình và tối ưu hóa tốt nhất cho môi trường server của bạn.
Việc duy trì một server khỏe mạnh và ổn định là chìa khóa để đảm bảo hoạt động kinh doanh liên tục và hiệu quả.
Xem thêm: