Chào các bạn,
Có đôi lúc trên VPS, Server có những tiến trình chạy chiếm quá nhiều tài nguyên cpu khiến cho các tiến trình khác không có đủ cpu để xử lý, dẫn đến VPS, Server bị chậm, lag, thậm chí là treo.
Trong bài viết này Kỹ thuật sẽ hướng dẫn các bạn cách giới hạn một dịch vụ trên CentOS 6 được quyền sử dụng tối đa bao nhiêu phần trăm cpu.
Chúng ta sẽ cài một công cụ có tên là cpulimit.
# yum --enablerepo=epel -y install cpulimit
Kịch bản đặt ra là ta sẽ tạo một file test.sh chạy một lệnh loop chiếm cpu và ta sẽ dùng công cụ cpulimit để giới hạn việc dùng cpu của file này.
Tạo file test.sh:
# vi test.sh
#!/bin/bash
while :; do :; done;
Cấp quyền thực thi cho file này:
# chmod 700 test.sh
Chạy file test.sh:
# ./test.sh &
Dấu & ở cuối câu lệnh sẽ cho ta biết PID của tiến trình chạy file này. (PID sẽ là thông tin ta dùng để giới hạn tiến trình)
Giờ ta có thể chạy lệnh top để kiểm tra xem tiến trình chạy file này chiếm bao nhiêu cpu.
Ta thấy tiến trình chạy file này đang chiếm hơn 99% cpu.
Giờ ta sẽ giới hạn tiến trình này lại bằng công cụ cpulimit.
# cpulimit -l 20 -p <PID> &
(& dùng để biết PID của tiến trình giới hạn tiến trình đang chạy file test.sh)
Ta thấy tiến trình chạy file test.sh đã bị giới hạn về mức sử dụng 20% cpu.
Nếu không muốn giới hạn nữa thì ta chỉ cần tìm tiến trình đã giới hạn file test.sh kia và kill tiến trình đó là được.
# ps auxf | grep cpulimit
Ta sẽ tìm được các tiến trình cpulimit đang chạy.
Tiến hành kill tiến trình này:
# kill -9 1129
Kiểm tra lại file test.sh chiếm bao nhiêu cpu.
Ta thấy file test.sh đã lại chiếm hơn 99% cpu như cũ.
Trên đây là bài hướng dẫn dùng công cụ cpulimit để giới hạn một tiến trình được chiếm dụng cpu.
Chúc các bạn thành công!
Leave A Comment?