Search Posts

书籍《Linux高效运维实战》推荐的一些Linux性能检测工具

linux下的性能监控工具命令

htop 命令

htop的优势是可以直接看到进程的启动命令。而且可以看进程树。支持水平、垂直方向 滚动。直接对该进程进行管理操作。

smem 命令

smem 是一款linux下的内存使用情况报告工具。能够给出linux下的内存使用的多种报告。和其他传统内存报告工具不通的是,有一个独特功能:报告PSS,即物理内存使用情况。

因为linux使用的虚拟内存,要准确计算一个进程实际使用的物理内存就不容易。但只知道一个进程的虚拟内存大小也并没有太大用处,因为还无法获取到实际占用的物理内存大小。

RSS (Resident Set Size)

使用top命令可以看到。表示进程占用的物理内存大小。但是将各进程的RSS值相加,通常会超出整个系统的内存消耗,这是因为RSS中包含了各进程间共享的内存。

PSS:(Proportional Set Size)

所有使用某共享库的程序均分该共享库的内存。显然所有进程的PSS之和就是系统的内存使用量。他会更准确一些,它将共享内存的大小进行平均后,再分摊到各个进程上去。

USS(Unique Set Size)

进程独自占用的内存。它只计算了进程独自占用的内存大小,不包含任何任何共享的部分。

smem 使用例子:

smem -p (百分比的形式查看内存使用情况)

smem -u (查看每个用户的内存使用情况)

smem -P nginx ( 查看某个进程占用内存大小)

smem -k -P nginx ( 查看某个进程占用内存大小) 

vmstat 命令可以看cpu 和内存(swap)、io占用情况。注意其中swap 即使有占用的话也要根据 si和so  来判断swap是否合理。

《linux高效运维实战》中,对swap占用的说明提到 ,vmstat 命令查询资源占用结果(以上第二图)里面 memory 列内的 swap列 表示切换到内存交换区的内存数量(KB 为单位)。如果swap值不为0,或者比较大,那么只要si 和so 的值长期 为0即没有影响 ( si 、 so全称是 swap in 和 swap out ,即换入 和 换出 的 交换内存量,即换入换出多的话会对IO产生实际压力)。这种情况下一般不用担心,不会影响系统性能。(如果si/so 长期不为0, 表示系统内存不足,需要增加系统内存)

iotop 可以监控磁盘I/O使用状况,检测到哪一个程序使用的磁盘I/O异常。

网络检测工具:

mtr 网络检测

mtr是linux 一个非常棒的网络连通性判断工具,结合了 ping traceroute,nslookup的相关特性。

列含义:

loss%是对应IP行的丢包率,值得一提的是,只有最后的目标丢包才算是真正的丢包。

Last列是最后一次返回的延迟,按毫秒计算的。

Avg列是所有返回延时的平均值。

Best列是最快的一次返回延时。

Wrst 是最差。

StDev列是标准偏差。

tcpdump 网络抓包分析工具命令

tcpdump 命令抓包分析:

参数:

-i 指定网卡,默认是eth0

-n线上IP,而不是hostname

-c 指定抓到多少个包后退出。

-A 以ASCII方式显示包的内容。这个选项对文本格式的协议包很有用。

-x 以16进制显示包的内容。

-vvv显示详细信息。

-s 按长包截取数据。默认是60字节,如何包大于60字节,则抓包会出现丢数据现象。所以一般会设置-s 0,这样会按照包的大小截取数据。并且抓到的是完整的包数据。

-r 从文件中读取(与-w 对应,例如,tcpdump -w test.out 表示将输出结果保存到test.out,尧都区此文件信息,可以通过-r test.out来实现)

-w 指定一个文件,保存抓包 信息到此文件中。

tcpdump使用举例:

抓取所有经过 eth0的网络数据:

tcpdump -i  eth0
tcpdump -n -i  eth0 

抓取经过eth0 的 5个包数据

tcpdump   -c  5  -i eth0

抓取所有经过eth0且基于TCP协议的网络数据:

tcpdump  -i eth0  tcp
加好友请备注:chinaoss
您可以在微信公众号联系我们
我们将24小时内回复。
取消