Lệnh htop trên máy chủ Linux là một trong những công cụ theo dõi thực tế hữu ích nhất để phát hiện các script tiêu tốn CPU và RAM quá mức. Bằng cách xem xét các cột CPU%, MEM%, PID, USER, TIME+ và COMMAND trên màn hình htop, bạn có thể xác định được script nào đang làm cho máy chủ của bạn trở nên chậm chạp, cho dù đó là PHP, Python, Node.js, cron, cơ sở dữ liệu hay các tiến trình hệ thống khác; từ đó, bạn có thể kiểm tra chủ sở hữu của tiến trình, đường dẫn tệp và mục đích làm việc để can thiệp an toàn.
Dù là hosting chia sẻ, VPS, VDS hay máy chủ riêng, phần lớn sự chậm trễ đột ngột xuất phát từ các script chạy không kiểm soát. Ví dụ, một plugin WordPress bị lỗi, một tệp PHP rơi vào vòng lặp vô hạn, một nhiệm vụ cron chạy liên tục, một truy vấn cơ sở dữ liệu không được tối ưu hóa, hoặc một tệp web bị xâm nhập có thể làm cho việc sử dụng CPU đạt gần 100% chỉ trong vài phút. Khi mức tiêu thụ RAM tăng lên, các dịch vụ có thể bị treo, các kết nối MySQL có thể bị ngắt, các trang web có thể gặp lỗi 503, hoặc nhân Linux có thể sử dụng OOM Killer để kết thúc một số tiến trình.
Trong hướng dẫn này, chúng ta sẽ đề cập từng bước từ việc cài đặt htop, cách đọc màn hình, cách phân biệt các script tiêu tốn CPU và RAM, tìm đường dẫn tệp qua PID, và cách can thiệp an toàn vào tiến trình. Chúng tôi cũng sẽ đề cập đến các vấn đề liên quan đến an ninh, kiểm tra cron, phân tích log, và các đề xuất tối ưu hóa khả thi để ngăn chặn sự cố lặp lại. Nếu bạn thường xuyên gặp vấn đề về giới hạn tài nguyên trên máy chủ của mình, hãy xem xét lại lựa chọn cơ sở hạ tầng bằng cách tham khảo các trang Gói máy chủ VPS và Web hosting hiệu năng cao.
htop là gì và tại sao nó hữu ích hơn lệnh top?
htop là một công cụ dòng lệnh cho phép theo dõi các tiến trình đang chạy trên hệ thống Linux một cách tương tác. Nó tương tự như lệnh top nhưng cung cấp giao diện dễ đọc hơn, với các chỉ số tài nguyên màu sắc, dễ dàng sắp xếp, tìm kiếm, lọc và quản lý tiến trình. Do đó, htop thường là công cụ đầu tiên mà nhiều quản trị viên hệ thống kiểm tra khi thực hiện chẩn đoán nhanh trên máy chủ đang chạy.
Bạn có thể xem những thông tin sau trong thời gian thực với htop:
- Tỷ lệ phần trăm CPU mà mỗi tiến trình sử dụng
- Tỷ lệ phần trăm và lượng RAM mà mỗi tiến trình sử dụng
- Số PID của tiến trình
- Người dùng đang chạy tiến trình
- Tên lệnh hoặc tên script
- Thời gian làm việc và giá trị ưu tiên
- Load average, tổng RAM, swap và mức sử dụng CPU của mỗi lõi
Đặc biệt, trong một môi trường hosting, nếu có nhiều trang web, người dùng hoặc dịch vụ chạy trên cùng một máy chủ, chỉ việc xem tổng mức sử dụng tài nguyên là không đủ. Cần xác định vấn đề thuộc về người dùng nào, trang web nào, nhiệm vụ cron nào hoặc tệp script nào. Lệnh htop trên máy chủ Linux cung cấp một chẩn đoán ban đầu nhanh chóng tại điểm này.
Cài đặt htop: Lệnh theo từng bản phân phối
Trên nhiều bản phân phối Linux hiện đại, htop có thể không được cài sẵn. Nếu bạn có quyền root hoặc sudo, bạn có thể cài đặt nó chỉ trong vài giây. Cập nhật danh sách gói trước khi cài đặt, đặc biệt trên các máy chủ mới cài đặt, sẽ giảm thiểu khả năng phát sinh lỗi.
Cài đặt htop trên máy chủ Ubuntu và Debian
Trên một máy chủ dựa trên Ubuntu hoặc Debian, bạn có thể sử dụng các lệnh sau:
sudo apt update
sudo apt install htop -y
Sau khi cài đặt, bạn có thể khởi động công cụ bằng cách nhập lệnh htop. Nếu bạn không có quyền sudo, bạn có thể cần yêu cầu hỗ trợ từ nhà cung cấp dịch vụ hosting. Nếu bạn đang sử dụng VPS có thể quản lý, quyền truy cập root thường thuộc về bạn.
Cài đặt trên AlmaLinux, Rocky Linux, CentOS và RHEL
Trên các hệ thống dựa trên RHEL, trình quản lý gói có thể là dnf hoặc yum tùy thuộc vào phiên bản:
sudo dnf install htop -y
Trên các phiên bản CentOS cũ, bạn có thể cần kho EPEL:
sudo yum install epel-release -y
sudo yum install htop -y
Nếu cài đặt thành công, khi bạn nhập htop trong terminal, màn hình theo dõi màu sắc sẽ xuất hiện. Nếu bạn mới làm quen với quản lý máy chủ, hướng dẫn lệnh Linux cũng cung cấp một khởi đầu thực tế.
Cách đọc màn hình htop: Các cột có ý nghĩa gì?
Khi mở htop, phần trên cùng của màn hình hiển thị thông tin về các lõi CPU, RAM, swap, số lượng tác vụ, số lượng thread, load average và uptime. Phần dưới sẽ liệt kê các tiến trình đang chạy. Các lĩnh vực thường được sử dụng nhiều nhất trong việc chẩn đoán vấn đề bao gồm:
| Cột | Ý nghĩa | Khi nào cần nghi ngờ? |
|---|---|---|
| PID | Số định danh duy nhất của tiến trình. | Cần thiết để kiểm tra đường dẫn tệp và các kết nối. |
| USER | Người dùng Linux đang chạy tiến trình. | Nếu có tiến trình chạy dưới người dùng không mong đợi, cần kiểm tra. |
| CPU% | Tỷ lệ sử dụng CPU hiện tại của tiến trình. | Các tiến trình duy trì trong khoảng 80-100% lâu dài cần được xem xét. |
| MEM% | Tỷ lệ RAM mà tiến trình sử dụng trong tổng số RAM. | Nếu một script sử dụng hơn 20% RAM, thì có thể có rủi ro. |
| TIME+ | Tổng thời gian CPU của tiến trình. | Chỉ ra các công việc tiêu thụ tài nguyên lâu dài, không chỉ tạm thời. |
| COMMAND | Thông tin về lệnh, dịch vụ hoặc script đang chạy. | Cần tìm đường dẫn tệp trong các tiến trình như php, python, node, perl, bash, java. |
Điều quan trọng cần lưu ý là một đợt tăng CPU tạm thời không phải lúc nào cũng là vấn đề. Ví dụ, sao lưu, tối ưu hóa hình ảnh, xóa cache hoặc lưu lượng truy cập cao có thể khiến CPU tạm thời tăng lên. Vấn đề thực sự xảy ra khi cùng một tiến trình tiêu thụ CPU hoặc RAM cao trong nhiều phút, giá trị load average vượt quá số lõi CPU, và các dịch vụ web không thể phản hồi.
Tìm kiếm các script tiêu tốn CPU với htop
Để tìm các script tiêu tốn CPU, bạn có thể chọn khu vực sắp xếp bằng cách nhấn phím F6 trên màn hình htop hoặc sắp xếp theo cột CPU%. Trong một số terminal có hỗ trợ chuột, chỉ cần nhấp vào tiêu đề CPU% cũng đủ. Các tiến trình hiển thị ở đầu danh sách là những tiến trình đang tiêu tốn nhiều CPU nhất tại thời điểm đó.
Bước 1: Sắp xếp theo cột CPU%
Khi htop đang chạy, hãy sắp xếp các tiến trình theo mức sử dụng CPU. Nếu một trong các tiến trình như php-fpm, php, python3, node, java, mysqld hoặc bash liên tục nằm ở các vị trí cao, hãy ghi chú lại tiến trình đó. Trong trường hợp sử dụng một lõi, 100% có thể là giới hạn bình thường, trong khi trên các hệ thống đa lõi, một tiến trình có thể hiển thị 200% hoặc 400%, điều này có nghĩa là tiến trình đang sử dụng nhiều lõi.
Bước 2: Ghi lại thông tin PID và USER
Ghi lại số PID và thông tin USER của tiến trình nghi ngờ. Ví dụ, nếu PID là 24819, USER là siteuser và trong cột COMMAND hiển thị php /home/siteuser/public_html/wp-cron.php, rất có thể vấn đề liên quan đến cron hoặc cơ chế WordPress trên trang web tương ứng. Nếu cột COMMAND quá ngắn, bạn có thể kích hoạt hiển thị toàn bộ dòng lệnh từ cài đặt htop hoặc lấy chi tiết bằng lệnh ps.
Bước 3: Xem lệnh thực sự của tiến trình
Để xem dòng lệnh chi tiết từ PID, bạn có thể sử dụng lệnh:
ps -fp PID
Ví dụ sử dụng:
ps -fp 24819
Kết quả này thường cho thấy script đang chạy từ tệp nào. Nếu lệnh hiển thị như php /home/user/public_html/index.php, có thể là một yêu cầu web do lưu lượng truy cập gây ra. Nếu hiển thị như php /home/user/public_html/wp-content/plugins/unknown-plugin/task.php, có thể là một vấn đề liên quan đến plugin.
Bước 4: Kiểm tra đường dẫn tệp và các tệp mở
Công cụ lsof rất hữu ích để xem các tệp mà một tiến trình đang sử dụng:
lsof -p PID
Lệnh này hiển thị các tệp mà tiến trình giữ mở, các thư viện, log và các kết nối mạng. Trong các môi trường hosting web, nhờ vào kết quả này, bạn có thể hiểu được thư mục trang web nào đang hoạt động. Ví dụ, nếu bạn thấy một tệp PHP có tên lạ trong /home/example/public_html/wp-content/uploads, đó có thể là dấu hiệu của một sự vi phạm bảo mật. Trong trường hợp như vậy, chỉ dừng tiến trình là không đủ; bạn cần thực hiện làm sạch tệp, thay đổi mật khẩu, cập nhật plugin và quét bảo mật. Đối với cấu hình SSL và kết nối an toàn, trang Giải pháp chứng chỉ SSL cũng nên được xem xét.
Tìm kiếm các script tiêu tốn RAM với htop
Các vấn đề liên quan đến RAM có thể âm thầm hơn so với các vấn đề về CPU. Khi CPU tăng cao, thường có cảm giác chậm trễ tạm thời; khi RAM cạn kiệt, các dịch vụ có thể đóng một cách bất ngờ, swap được sử dụng nhiều và độ trễ trên toàn máy chủ tăng lên. Bạn có thể sắp xếp theo cột MEM% trên màn hình htop để liệt kê các tiến trình sử dụng nhiều bộ nhớ nhất.
Hiểu mối quan hệ giữa MEM%, RES và Swap
htop trong chế độ hiển thị mặc định cho thấy tỷ lệ MEM%. Trong một số cấu hình, các cột VIRT, RES và SHR cũng có thể hiển thị. Khi phân tích RAM, giá trị RES đặc biệt quan trọng; vì nó biểu thị không gian mà tiến trình thực sự sử dụng trong bộ nhớ vật lý. Giá trị VIRT không phải lúc nào cũng đồng nghĩa với mức tiêu thụ RAM thực tế, vì vậy nó có thể gây nhầm lẫn nếu chỉ xem xét một mình.
Ví dụ, trên một VPS có 4 GB RAM, việc một tiến trình PHP sử dụng 900 MB RES là điều bất thường. Tương tự, việc một ứng dụng Node.js từ từ tăng từ 200 MB lên 1.5 GB có thể gợi ý khả năng rò rỉ bộ nhớ. Việc sử dụng RAM cao từ MySQL hoặc MariaDB đôi khi có thể là hành vi cache bình thường; ở đây, hiệu suất truy vấn, thiết lập bộ đệm và tổng dung lượng bộ nhớ hệ thống cần được xem xét cùng nhau.
Các nguyên nhân điển hình trong các script tiêu tốn RAM
- Các mã PHP, Python hoặc Node.js rơi vào vòng lặp vô hạn
- Việc nạp các tệp CSV, XML hoặc JSON lớn vào bộ nhớ một lần
- Các plugin và chức năng theme WordPress không được tối ưu hóa
- Các tác vụ xử lý hình ảnh, tạo PDF hoặc chuyển đổi video
- Các truy vấn nặng do không sử dụng cache hợp lý
- Lưu lượng bot hoặc tấn công gây ra việc cùng một script chạy nhiều lần
- Các dịch vụ nền kéo dài có rò rỉ bộ nhớ
Trong những trường hợp này, chỉ việc sử dụng lệnh kill để dừng tiến trình sẽ chỉ mang lại sự nhẹ nhõm tạm thời. Để có giải pháp lâu dài, cần phải phân tích script đang làm gì, nó được kích hoạt bởi những đầu vào nào và tại sao không giải phóng bộ nhớ.
Tìm kiếm trong htop, lọc và chế độ cây
Khi có hàng trăm tiến trình chạy trên máy chủ, việc tìm kiếm thủ công trong danh sách có thể trở nên khó khăn. htop cung cấp các phím tắt hữu ích cho việc này. Bạn có thể tìm kiếm bằng phím F3, áp dụng bộ lọc bằng phím F4, và chuyển sang chế độ cây bằng phím F5. Chế độ cây đặc biệt quan trọng để xem mối quan hệ cha-con. Ví dụ, bạn có thể dễ dàng thấy các tiến trình con php-fpm chạy dưới nginx hoặc Apache, các script được kích hoạt dưới cron, hoặc các dịch vụ Node.js được quản lý bởi supervisor.
Ví dụ về bộ lọc thực tế
- Gõ php để chỉ hiển thị các tiến trình PHP.
- Gõ python để lọc các script Python.
- Gõ wp-cron để kiểm tra hành vi cron của WordPress.
- Gõ node để xem xét các ứng dụng Node.js.
- Lọc theo tên người dùng để xem các tiến trình của một tài khoản hosting duy nhất.
Các bộ lọc này tiết kiệm thời gian, đặc biệt trên các máy chủ đa người dùng. Ví dụ, nếu có 30 trang web khác nhau trên cùng một máy chủ, việc xem xét cột USER và đường dẫn lệnh có thể giúp nhanh chóng xác định vấn đề thuộc về tài khoản nào. Nếu bạn muốn đơn giản hóa quản lý cho các dự án dựa trên tên miền, hãy tham khảo trang Tra cứu tên miền và đăng ký.
Kế hoạch can thiệp an toàn cho PID nghi ngờ
Khi bạn phát hiện một tiến trình tiêu tốn tài nguyên, có thể bạn sẽ bị cám dỗ để ngay lập tức sử dụng lệnh kill -9. Tuy nhiên, cách tiếp cận này có thể dẫn đến mất dữ liệu, các thao tác ghi bị dở dang hoặc sự không nhất quán trong dịch vụ. Cần phải thực hiện một kế hoạch an toàn hơn.
1. Ghi lại tiến trình
Đầu tiên, hãy ghi lại PID, USER, COMMAND, CPU%, MEM% và thời gian. Nếu có thể, hãy chụp màn hình htop. Những bản ghi này sẽ giúp cho việc so sánh trong các vấn đề lặp lại trở nên dễ dàng hơn. Đặc biệt trong các dự án của cơ quan, thương mại điện tử hoặc doanh nghiệp, dữ liệu này rất hữu ích khi bạn cần cung cấp giải thích kỹ thuật cho khách hàng.
2. Xác minh đường dẫn tệp của tiến trình
Sử dụng các lệnh ps -fp PID và lsof -p PID để xác minh đường dẫn tệp. Nếu tệp nằm trong thư mục gốc web, hãy kiểm tra các log của ứng dụng liên quan. Đối với WordPress, log debug trong wp-content, log truy cập và log lỗi trên máy chủ web, log chậm PHP-FPM sẽ cung cấp nhiều manh mối quan trọng.
3. Thử dừng tiến trình một cách nhẹ nhàng trước
Nếu tiến trình thực sự đang chạy không kiểm soát, hãy gửi tín hiệu dừng tiêu chuẩn trước:
kill PID
Chờ vài giây và kiểm tra trên màn hình htop xem tiến trình đã dừng hay chưa. Nếu không dừng và hệ thống đang bị ảnh hưởng nghiêm trọng, bạn có thể sử dụng lệnh sau như một biện pháp cuối cùng:
kill -9 PID
Tín hiệu kill -9 sẽ kết thúc tiến trình mà không cho nó cơ hội dọn dẹp. Do đó, cần cẩn thận khi sử dụng nó cho các thao tác cơ sở dữ liệu, quy trình ghi tệp hoặc các nhiệm vụ sao lưu.
4. Nếu tiến trình khởi động lại, hãy tìm nguyên nhân kích hoạt
Nếu bạn đóng một tiến trình nhưng nó khởi động lại chỉ vài giây sau, có thể có cron, dịch vụ systemd, supervisor, yêu cầu web hoặc lưu lượng bot phía sau nó. Kiểm tra các bản ghi cron bằng lệnh crontab -l, trạng thái dịch vụ hệ thống bằng lệnh systemctl status service_name, và kiểm tra log truy cập cho lưu lượng web. Nếu vấn đề là do cron của WordPress, cần xem xét cấu hình cron thực tế và chính sách cache.
Kết hợp kết quả từ htop với log

htop cho bạn biết điều gì đang tiêu tốn tài nguyên; các log giúp bạn hiểu lý do tại sao lại tiêu tốn như vậy. Khi không sử dụng hai dữ liệu này cùng nhau, việc chẩn đoán sẽ không đầy đủ. Ví dụ, trong htop, tiến trình php-fpm có thể đang sử dụng 180% CPU; nhưng bạn có thể không thấy URL nào đang kích hoạt tiến trình này nếu không có log truy cập.
Các ví dụ về log có thể kiểm tra bao gồm:
- Log truy cập máy chủ web: Hiển thị các URL nhận được yêu cầu lớn.
- Log lỗi máy chủ web: Hiển thị lỗi PHP, quyền tệp và lỗi 500.
- Log chậm PHP-FPM: Hiển thị các tệp và chức năng PHP chạy chậm.
- Log truy vấn chậm MySQL: Phát hiện các truy vấn SQL nặng.
- Log xác thực hoặc log bảo mật: Hiển thị các nỗ lực đăng nhập nghi ngờ.
- Log cron: Hiển thị thời gian các nhiệm vụ được thực thi.
Ví dụ, nếu PID tiêu tốn CPU cao trong htop nhận được hàng ngàn yêu cầu từ URL /wp-admin/admin-ajax.php trong cùng một phút, vấn đề có thể là do một plugin, lưu lượng bot hoặc một quá trình AJAX thiết kế kém. Trong trường hợp đó, bạn cần xem xét WAF, giới hạn tỷ lệ, cache và tối ưu hóa plugin cùng nhau. Để giải quyết hiệu suất của trang web ở mức độ lớn hơn, nội dung về Tối ưu hóa tốc độ website có thể hữu ích.
Phân biệt giữa tải bình thường và tải gặp vấn đề như thế nào?
Không phải tất cả việc sử dụng tài nguyên cao đều có nghĩa là khủng hoảng. Cần xem xét phần cứng của máy chủ, mức độ lưu lượng, loại ứng dụng và các quy trình bảo trì. Đối với một VPS có 2 lõi, việc giữ load average ở mức 6-8 trong một thời gian dài là dấu hiệu của một nút thắt nghiêm trọng. Trong khi đó, cùng một giá trị này có thể là bình thường trên một máy chủ riêng với 16 lõi. Do đó, khi đánh giá load average, số lượng lõi CPU phải được biết đến.
| Quan sát | Tình huống có thể xảy ra | Hành động đề xuất |
|---|---|---|
| CPU ngắn hạn đạt 100%, sau đó quay lại bình thường | Quá trình tạm thời cao | Xác minh bằng log, không can thiệp ngay lập tức. |
| Cùng một PID sử dụng CPU cao trong nhiều phút | Vòng lặp vô hạn hoặc quá trình nặng | Tìm đường dẫn PID, kiểm tra script. |
| RAM liên tục tăng và không giảm | Rò rỉ bộ nhớ | Kiểm tra mã dịch vụ và cấu hình worker. |
| Sử dụng swap tăng nhanh | Thiếu RAM vật lý | Lập kế hoạch tối ưu hóa RAM hoặc nâng cấp gói. |
| Có nhiều tiến trình PHP giống nhau | Lưu lượng bot hoặc yêu cầu cao | Kiểm tra log truy cập, tường lửa và cache. |
Sự so sánh này giúp bạn phân biệt giữa sự hoảng loạn không cần thiết và khủng hoảng hiệu suất thực sự. Đặc biệt, trong các trang web thương mại điện tử, các đợt khuyến mãi, tích hợp thanh toán và cập nhật tồn kho có thể tạo ra sự tăng trưởng tài nguyên tạm thời. Tuy nhiên, nếu sự tăng trưởng này ảnh hưởng xấu đến trải nghiệm người dùng, cần phải xem xét tối ưu hóa ứng dụng và công suất máy chủ cùng nhau.
Nghi ngờ về an ninh: Có thể script tiêu tốn tài nguyên là độc hại không?
Các script tiêu tốn CPU hoặc RAM không phải lúc nào cũng là lỗi vô hại. Trên các trang web bị xâm phạm, kẻ tấn công có thể chạy các script gửi spam, khai thác tiền ảo, lưu lượng proxy, bot DDoS hoặc các script backdoor. Các lệnh lạ chạy dưới người dùng không mong đợi, các tệp có tên ngẫu nhiên, các tệp nhị phân chạy từ thư mục /tmp hoặc các tệp PHP chạy trong public_html/uploads cần được xem xét nghiêm túc về mặt bảo mật.
Các dấu hiệu nghi ngờ
- Các tên tệp trong cột COMMAND không có nghĩa hoặc có ký tự ngẫu nhiên
- Các tệp chạy từ thư mục /tmp, /dev/shm hoặc uploads
- Các tiến trình perl, python hoặc bash không bình thường
- Các tiến trình tạo ra kết nối mạng cao bên ngoài
- Cùng một người dùng khởi động nhiều tiến trình trong thời gian ngắn
- Các thay đổi trái phép gần đây trong các tệp web
Trong trường hợp như vậy, trước khi dừng tiến trình, nếu có thể, hãy thu thập các đầu ra lệnh như bằng chứng. Sau đó, kiểm tra quyền tệp, cô lập các tệp độc hại, thay đổi tất cả mật khẩu của panel và CMS, cập nhật các tệp lõi của plugin-theme, và thực hiện quét bảo mật. Ngoài ra, việc sử dụng xác thực hai yếu tố trên các panel quản trị và gỡ bỏ các quyền ghi không cần thiết sẽ giảm thiểu rủi ro lâu dài.
Các thực hành tốt nhất để ngăn chặn sự tái diễn của các vấn đề hiệu suất
Việc tìm kiếm vấn đề bằng htop là quan trọng; nhưng giá trị thực sự nằm ở việc ngăn chặn sự tái diễn của cùng một vấn đề. Các biện pháp sau đây sẽ giảm thiểu đáng kể các gián đoạn do CPU và RAM trên các máy chủ Linux.
- Điều chỉnh các giá trị PHP memory_limit, max_execution_time và pm.max_children theo công suất máy chủ.
- Sử dụng cơ chế cache trong WordPress, Joomla hoặc phần mềm tùy chỉnh.
- Gỡ bỏ các plugin, theme và module không cần thiết.
- Tối ưu hóa các truy vấn nặng bằng log truy vấn chậm MySQL.
- Không xếp chồng các nhiệm vụ cron vào cùng một phút; hãy chạy chúng cách nhau.
- Áp dụng giới hạn tỷ lệ, robots.txt và quy tắc tường lửa cho lưu lượng bot.
- Định kỳ xoay vòng các log ứng dụng; theo dõi tác động của các tệp log lớn đến đĩa và RAM.
- Theo dõi các chỉ số máy chủ không chỉ trong thời gian khủng hoảng mà còn thường xuyên.
Nếu mặc dù đã có các tối ưu hóa, mức sử dụng tài nguyên vẫn liên tục cao, vấn đề không chỉ nằm ở phần mềm. Lưu lượng có thể đã tăng, ứng dụng có thể đã phát triển, hoặc gói hosting hiện tại có thể không đủ. Trong trường hợp này, một VPS có khả năng mở rộng, nhiều RAM hơn, ổ đĩa NVMe nhanh hơn, hoặc một máy chủ với tài nguyên riêng biệt sẽ trở nên hợp lý. Bạn có thể so sánh các tùy chọn qua Gói hosting và giải pháp server doanh nghiệp.
Ví dụ kịch bản: Bùng nổ CPU trên trang WordPress
Hãy đi qua một kịch bản thực tế. Trên một VPS có 4 lõi và 8 GB RAM, một vài trang WordPress đang chạy. Người dùng báo cáo rằng trang web đang chậm lại và thỉnh thoảng nhận được lỗi 502. Khi mở terminal và chạy htop, load average ở mức 12, tất cả các lõi CPU đều đầy và có nhiều tiến trình php-fpm thuộc về cùng một người dùng xuất hiện ở các vị trí cao.
Chúng ta lọc theo tên người dùng bằng phím F4. Ghi lại PID của một trong các tiến trình tiêu tốn CPU. Trong kết quả ps -fp PID cho thấy một worker php-fpm; với lệnh lsof -p PID, phát hiện ra rằng nó có quyền truy cập vào tệp /home/site/public_html/wp-content/plugins/example-importer/import.php. Khi xem log truy cập, thấy rằng trong cùng một phút, có yêu cầu từ quản trị viên kích hoạt tệp này và sau đó là các cuộc gọi AJAX lặp lại.
Giải pháp là dừng quy trình nhập, tắt nhiệm vụ đã lên lịch của plugin, chia nhỏ quy trình nhập dữ liệu lớn và điều chỉnh lại giới hạn max_execution_time của PHP. Ngoài ra, sử dụng cron hệ thống thay vì wp-cron. Kết quả là load average giảm từ 12 xuống 1.8, mức sử dụng CPU quay về bình thường và thời gian phản hồi web được cải thiện rõ rệt. Ví dụ này cho thấy rằng htop không chỉ hiệu quả khi sử dụng một mình; mà còn rất mạnh mẽ khi kết hợp với ps, lsof và phân tích log.
Các lỗi phổ biến khi sử dụng htop
- Chỉ dừng tiến trình ở đầu danh sách mà không tìm hiểu nguyên nhân gốc rễ.
- Nhầm lẫn giá trị VIRT với mức sử dụng RAM thực tế.
- Xem việc sử dụng RAM của MySQL với mục đích cache là một vấn đề trực tiếp.
- Sử dụng lệnh kill -9 làm lựa chọn đầu tiên.
- Đổ lỗi cho ứng dụng hoặc người dùng mà không kiểm tra log.
- Giải thích giá trị load average mà không xem xét số lượng lõi CPU.
- Không xem xét tính toàn vẹn của tệp trong trường hợp nghi ngờ về an ninh.
Tránh những sai lầm này không chỉ giúp giảm thời gian gián đoạn mà còn giảm thiểu nguy cơ mất dữ liệu do can thiệp sai. Việc chẩn đoán chính xác trong quản lý hệ thống thường có giá trị hơn nhiều so với can thiệp nhanh chóng.
Các câu hỏi thường gặp
Lệnh htop trên máy chủ Linux có tác dụng gì?
Lệnh htop trên máy chủ Linux hiển thị thông tin về các tiến trình đang chạy, bao gồm CPU, RAM, người dùng, PID và thông tin lệnh trong thời gian thực. Điều này giúp bạn nhanh chóng xác định các script tiêu tốn CPU hoặc RAM quá mức.
Làm thế nào để tìm các script tiêu tốn CPU bằng htop?
Trong màn hình htop, hãy sắp xếp các tiến trình theo cột CPU%, ghi lại PID và thông tin USER của tiến trình ở trên cùng. Sau đó, sử dụng lệnh ps -fp PID và lsof -p PID để xác minh đường dẫn tệp của script và lệnh đang chạy.
Trong việc tiêu thụ RAM, nên chú ý đến MEM% hay VIRT?
Khi phân tích RAM, MEM% và đặc biệt là giá trị RES có ý nghĩa hơn. VIRT thể hiện lượng bộ nhớ ảo đã được phân bổ và không phải lúc nào cũng đồng nghĩa với mức tiêu thụ RAM vật lý.
Có đúng không nếu ngay lập tức đóng tiến trình tiêu tốn tài nguyên bằng kill -9?
Thông thường là không. Trước tiên, hãy ghi lại thông tin về tiến trình, xác minh đường dẫn tệp và thử lệnh kill PID trước. Lệnh kill -9 chỉ nên được sử dụng như một biện pháp cuối cùng khi tiến trình không dừng lại và ảnh hưởng nghiêm trọng đến sức khỏe của máy chủ.
Việc sử dụng CPU cao trong htop có phải lúc nào cũng là dấu hiệu của một cuộc tấn công không?
Không. Việc sao lưu, nhập dữ liệu, tạo cache hoặc lưu lượng truy cập cao cũng có thể làm tăng mức sử dụng CPU. Tuy nhiên, các tên tệp ngẫu nhiên, các script chạy từ /tmp hoặc uploads và các tiến trình người dùng không mong đợi có thể tạo ra nghi ngờ về an ninh.
Tóm lại, lệnh htop trên máy chủ Linux là một điểm khởi đầu nhanh chóng, thực tế và hiệu quả để tìm kiếm các script tiêu tốn CPU và RAM. Để có được kết quả chính xác nhất, cần kết hợp dữ liệu htop với phân tích PID, đầu ra lsof, kiểm tra cron và phân tích log. Nếu bạn gặp phải các vấn đề về tài nguyên thường xuyên, hãy đánh giá cả tối ưu hóa phần mềm và khả năng hạ tầng; trong trường hợp cần thiết, hãy so sánh các giải pháp hosting, VPS và SSL của Hostragons mà không có áp lực bán hàng để chọn cấu trúc phù hợp nhất cho dự án của bạn.