Kiểm tra tiến trình chiếm dụng CPU trong Linux với SysStat
Trong Linux, một vấn đề rất đáng lưu tâm đó chính là việc kiểm tra rằng tiến trình nào đang chiếm dụng CPU. Bạn chưa từng nghĩ tới điều này ? Và một ngày đẹp trời nào đó, CPU cứ tăng vọt lên không rõ nguyên do, giờ là lúc bạn cần nhanh chóng khoang vùng để tìm ra đối tượng khả nghi nhất. Bài viết sẽ giới thiệu tới bạn cách giải quyết thông qua ứng dụng SysStat.
Trước hết, việc bạn cần làm đó chính là cài đặt chương trình này:
yum install sysstat
Trong ví dụ đầu tiên, chúng ta sẽ cần tìm ra rằng thực sự tài nguyên CPU đang được sử dụng ở đâu, bạn hãy thử với dòng lệnh này:
| [root@abc ~]# sar -u 3 10 Linux 2.6.32-358.el6.x86_64 (abc.xyz.com) 12/31/2013 _x86_64_ (4 CPU) 01:09:51 AM CPU %user %nice %system %iowait %steal %idle 01:09:54 AM all 0.00 0.00 0.25 1.08 0.00 98.67 01:09:57 AM all 0.00 0.00 0.00 0.00 0.00 100.00 01:10:00 AM all 0.50 0.00 0.25 0.42 0.00 98.83 01:10:03 AM all 6.68 0.00 2.59 3.42 0.00 87.31 01:10:06 AM all 1.34 0.00 0.67 3.09 0.00 94.91 01:10:09 AM all 13.92 0.00 3.42 3.58 0.00 79.08 01:10:12 AM all 5.34 0.00 5.59 6.17 0.00 82.90 01:10:15 AM all 0.67 0.00 0.42 0.75 0.00 98.16 01:10:18 AM all 18.53 0.00 3.26 7.43 0.00 70.78 01:10:21 AM all 2.17 0.00 0.58 0.25 0.00 97.00 Average: all 4.91 0.00 1.70 2.62 0.00 90.76 |
Trước hết với lệnh sar -u 3 10, bạn có thể hiểu là: với lệnh này server sẽ tiến hành kiểm tra 10 lần, mỗi lần cách nhau 3s, bên cạnh đó còn cần chú ý thêm các thông số quan trọng khác ở đây, đó là:
%user : đây là lượng chiếm dụng CPU khi một user khởi tạo tiến trình
%nice: đây là lượng chiếm dụng CPU khi tiến trình được tạo bởi user với độ ưu tiên là nice
%system: đây là lượng chiếm dụng CPU khi tiến trình được tạo ra bởi kernel (hệ thống)
%iowait: đây là lượng chiếm dụng CPU khi cpu đang trong trạng thái idle ở thời điểm phát sinh I/O request
%idle: : đây là lượng chiếm dụng CPU khi cpu đang trong trạng thái idle ở thời điểm không có I/O request
Lệnh tiếp theo sẽ cho phép chúng ta tìm ra được cụ thể rằng tiến trình nào đang chiếm dụng CPU:
| [root@abc ~]# ps -eo pcpu,pid,user,args | sort -r -k1 | less %CPU PID USER COMMAND 1.3 23805 mysql /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/abc.xyz.com.err --pid-file=/var/lib/mysql/abc.xyz.com.pid --socket=/var/lib/mysql/mysql.sock --port=3306 0.1 11044 user1 /usr/local/bin/php /home/user1/domains/ngoisao.net/public_html/Home/cron.php 0.0 9 root [ksoftirqd/1] 0.0 95 root [scsi_eh_0] 0.0 94 root [mpt/0] 0.0 944 root /usr/sbin/vmtoolsd 0.0 93 root [mpt_poll_0] 0.0 8 root [migration/1] 0.0 80 root [usbhid_resumer] |
Sau khi đã tìm ra nguyên nhân tiến trình nào đã chiếm dụng CPU, bạn có thể thực hiện Kill nó thông qua PID, hoặc điều chỉnh lại các thông số cho phù hợp hơn nếu cần thiết.
0 Comments