目录

一、htop工具使用简介

二、dstat工具使用简介

    此博文针对linux系统介绍两款常用系统性能监控软件的基本使用,对于Linux系统我们一般要监控的对象有进程、cpu、内存、磁盘IO、swap、网卡等。

(一)htop工具使用简介

    htop是一个比top更为易用,功能更强大的交互式进程查看器,是一个免费的,遵循GPL协定的,针对于Linux的进程查看器。还能实现在监控界面中对某一个进程发送信号,比如杀死一个进程等,也能调整一个进程的优先级等功能。先来一张htop运行时的图片。

linux系统性能监控工具--htop与dstat介绍_第1张图片

htop的安装非常简单,在centos系统上只要配置好epel源,直接"yum -y install htop"即可,注意看上图中红框部份,通过这些快捷键我们就可以轻松掌握htop的基本使用方法,现整理一些常用的htip的使用方法。

1.1、怎样调整htop输出的排序标准

    默认时htop是以cpu的使用率为标准进行从大到小的排列,如果你想以内存的使用率、或以共享内存大小、或以占用cpu时间片为标准来排序,那可以这样来操作。

按下“F6”键,出现下图中的第一图,再选择你所期望排序的标准,我这里选择了“MEM%”,再回车确定即可,如下图中的第二张图。

linux系统性能监控工具--htop与dstat介绍_第2张图片

linux系统性能监控工具--htop与dstat介绍_第3张图片

1.2、怎样对指定的进程进行监控

    按下“F4”键,启用过虑功能,在输入框里输入你想要监控的进程名称,我这里以nginx为例,如下图所示。

linux系统性能监控工具--htop与dstat介绍_第4张图片

这样就可以监控你指定的进程了,再按下回车,再按下“F5”键,还可以查看进程之间的关系,如下图所示:

linux系统性能监控工具--htop与dstat介绍_第5张图片

从上图可以看出6个worker进程是由一个master进程fork出来的。那这里又怎么返回到默认打开时的窗口呢?再按下“F4”后,注意左下方的提示信息,再按下“Esc”后返回,只不过是按两下。

linux系统性能监控工具--htop与dstat介绍_第6张图片

1.3、怎样定位到指定进程

    用第二种过虑方法也能定位到指定的进程,只不过第二种方法显示出来的进程只有你指定的进程,如果你只是想查看一下一个进程的基本信息,比如查看一下它的PID号是多少,那就不用采用过虑器的方式去查看了。直接用“Search”功能即可,操作方法为在htop的主界面按下“F3”(直接按下“/”这个键也可以,即问号所在键),在输入框输入你想定位的进程名即可,以nginx为例,如下图:

linux系统性能监控工具--htop与dstat介绍_第7张图片如果你指定的进程名称有多个,还可以断续按“F3”键进行查找。

1.4、利用htop调整进程的nice值

    比如我想增加nginx的master进程的优先级,那我们要把master进程的nice值调小,那先在htop界面中先定位到nginx的master进程,再按下“F7”,按一次nice值就减去1,如果想增加nice值,那就按“F8”键。补充一点,nice值的范围是(-20,19),值越小,进程的优先级越高。结果如如下图所示:

linux系统性能监控工具--htop与dstat介绍_第8张图片1.5、利用htop向进程传递信号

    通过htop可以向一个进程发送信号,比如你发现一个可疑进程,你可以直接杀掉它,即向进程发送“SIGKILL”信号,如果你想让一个进程重新启动一下,那可以向它发送“SIGHUP”信号等。以nginx为例,先定位到nginx,再按下“F9”键,再选择你要发送的信号,回车即可。仔细看了下,一共有32个信号。

linux系统性能监控工具--htop与dstat介绍_第9张图片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

这样就比较容易的找出系统中占用资源的最高的进程,在查×××器性能瓶颈时非常有用。