您的位置:首页 > 运维架构 > Linux

linux系统性能监控工具--htop与dstat介绍

2015-06-10 18:58 786 查看
目录
一、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: root@pt0.0|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: root@pt0.5|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
这样就比较容易的找出系统中占用资源的最高的进程,在查找服务器性能瓶颈时非常有用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  htop dstat