目录
一、htop工具使用简介
二、dstat工具使用简介
此博文针对linux系统介绍两款常用系统性能监控软件的基本使用,对于Linux系统我们一般要监控的对象有进程、cpu、内存、磁盘IO、swap、网卡等。
(一)htop工具使用简介
htop是一个比top更为易用,功能更强大的交互式进程查看器,是一个免费的,遵循GPL协定的,针对于Linux的进程查看器。还能实现在监控界面中对某一个进程发送信号,比如杀死一个进程等,也能调整一个进程的优先级等功能。先来一张htop运行时的图片。
htop的安装非常简单,在centos系统上只要配置好epel源,直接"yum -y install htop"即可,注意看上图中红框部份,通过这些快捷键我们就可以轻松掌握htop的基本使用方法,现整理一些常用的htip的使用方法。
1.1、怎样调整htop输出的排序标准
默认时htop是以cpu的使用率为标准进行从大到小的排列,如果你想以内存的使用率、或以共享内存大小、或以占用cpu时间片为标准来排序,那可以这样来操作。
按下“F6”键,出现下图中的第一图,再选择你所期望排序的标准,我这里选择了“MEM%”,再回车确定即可,如下图中的第二张图。
1.2、怎样对指定的进程进行监控
按下“F4”键,启用过虑功能,在输入框里输入你想要监控的进程名称,我这里以nginx为例,如下图所示。
这样就可以监控你指定的进程了,再按下回车,再按下“F5”键,还可以查看进程之间的关系,如下图所示:
从上图可以看出6个worker进程是由一个master进程fork出来的。那这里又怎么返回到默认打开时的窗口呢?再按下“F4”后,注意左下方的提示信息,再按下“Esc”后返回,只不过是按两下。
1.3、怎样定位到指定进程
用第二种过虑方法也能定位到指定的进程,只不过第二种方法显示出来的进程只有你指定的进程,如果你只是想查看一下一个进程的基本信息,比如查看一下它的PID号是多少,那就不用采用过虑器的方式去查看了。直接用“Search”功能即可,操作方法为在htop的主界面按下“F3”(直接按下“/”这个键也可以,即问号所在键),在输入框输入你想定位的进程名即可,以nginx为例,如下图:
如果你指定的进程名称有多个,还可以断续按“F3”键进行查找。
1.4、利用htop调整进程的nice值
比如我想增加nginx的master进程的优先级,那我们要把master进程的nice值调小,那先在htop界面中先定位到nginx的master进程,再按下“F7”,按一次nice值就减去1,如果想增加nice值,那就按“F8”键。补充一点,nice值的范围是(-20,19),值越小,进程的优先级越高。结果如如下图所示:
1.5、利用htop向进程传递信号
通过htop可以向一个进程发送信号,比如你发现一个可疑进程,你可以直接杀掉它,即向进程发送“SIGKILL”信号,如果你想让一个进程重新启动一下,那可以向它发送“SIGHUP”信号等。以nginx为例,先定位到nginx,再按下“F9”键,再选择你要发送的信号,回车即可。仔细看了下,一共有32个信号。
htop的基本使用就到这里,更多的功能需要我们在实践中去挖掘。
(二)dstat工具使用简介
dstat是一个多用途的系统资源统计工具,能打印出cpu、内存、磁盘、进程、网络、内存页等各种各样资源的状态统计信息,功能非常全面的系统监控工具。以centos系统上直接使用“yum -y install dstat”进行安装。
语法为:
dstat [-afv] [options..] [delay [count]]
-afv:是三个可选参数,可以自己测试一下每个参数的不同
option:是可选的众多选项
delsy:是指定采集频率
count:采集次数
这里介绍一些常用的options:
-c, --cpu 打开cpu的监控状态
-d, --disk 打开对磁盘的监控
-g, --page 打开对页面状态的监控
-n, --net 打开对网络的监控
-y, --sys 打开对系统内核活动的监控,主要是系统接受的中断和上下文切换的次数
-a, --all 这个选项相当于-cdgny这两个选项,是dstat默认的工作选项
-t, --time 这个选项可以把数据采集时的时间也一起输出
--tcp 打开对tcp状态的监控,包括处理listen,established,syn等状态的数量
--output file 指定监控输出信息保存为csv的文件
还有一些与插件相关的选项,有些插件需要自己安装,但有些则可直接使用,这里介绍几个比较常用的:
--top-bio :显示出最占用块级别IO的进程
--top-cpu:显示出最消耗cpu的进程
--top-io:显示出最占io的进程
--top-mem :显示出最消耗内存的进程
dstat的选项太多,这里只列出少数的一部份,可以man dstat进行查看。
1.1、dstat以默认选项输出
[root@nod0 software]# dstat ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 0 0 99 0 0 0| 13k 5050B| 0 0 | 0 6B| 37 45 0 0 100 0 0 0| 0 0 | 60B 826B| 0 0 | 21 30 0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 16 31 0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 16 30 0 1 99 0 0 0| 0 0 | 60B 346B| 0 0 | 17 29 0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 18 35 0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 15 27 0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 17 32 0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 19 31 1 1 99 0 0 0| 0 16k| 60B 346B| 0 0 | 99 97
直接运行dstat时,默认是以“-cndgy”选项并频率为1秒输出监控信息,现对上边的输出做一个简单的解释。
----total-cpu-usage----:表示是系统中全部cpu的一个使用情况统计
usr sys idl wai hiq siq| :分别表示用户进程所用cpu的占比,内核进程所用cpu的占比,cpu空闲状态的比例,cpu等待io时间所占比例,cpu接受硬中断的次数,cpu接受软中断的次数。
-dsk/total- :表示系统中全部磁盘状态信息的输出
read writ :分别表示全部磁盘发生读请求的数据量,全部磁盘发生写请求的数据量;
-net/total- :表示系统中全部网卡的状态信息
recv send :分别表示全部网卡收到的数据量,全部网卡发送报文的数据量
---paging-- :表示内存页面使用情况
--system-- :表示打开系统级的监控,包括中断和上下文切换
in: 每秒产生的中断次数
cs::每秒产生的上下文切换次数
1.2、找出占用系统资源最高的进程
[root@nod0 software]# dstat -t --top-cpu --top-io --top-mem ----system---- -most-expensive- ----most-expensive---- --most-expensive- date/time | cpu process | i/o process | memory process 10-06 18:46:38|sshd: [email protected]|bash 51k 1503B|mysqld 95.0M 10-06 18:46:39| |sshd: root@ 491B 532B|mysqld 95.0M 10-06 18:46:40| |sshd: root@ 184B 228B|mysqld 95.0M 10-06 18:46:41|dd 19|dd 73M 72M|mysqld 95.0M 10-06 18:46:42|flush-8:0 0.5|bash 100M 100M|mysqld 95.0M 10-06 18:46:43| |sshd: root@ 191B 244B|mysqld 95.0M 10-06 18:46:44| |sshd: root@ 184B 228B|mysqld 95.0M 10-06 18:46:45|sshd: [email protected]|sshd: root@ 184B 228B|mysqld 95.0M 10-06 18:46:46| |sshd: root@ 191B 244B|mysqld 95.0M 10-06 18:46:47|jbd2/sda2-8 0.5|sshd: root@ 184B 228B|mysqld 95.0M 10-06 18:46:48| |sshd: root@ 191B 244B|mysqld 95.0M 10-06 18:46:49| |sshd: root@ 184B 228B|mysqld 95.0M 10-06 18:46:50|dd 6.5|dd 93M 92M|mysqld 95.0M 10-06 18:46:51|dd 6.0|dd 7168k 8192k|mysqld 95.0M
这样就比较容易的找出系统中占用资源的最高的进程,在查找服务器性能瓶颈时非常有用。