Linux系统性能分析工具
本文最后更新于 2024-10-16,文章内容距离上一次更新已经过去了很久啦,可能已经过时了,请谨慎参考喵。
title: Linux系统性能分析工具
tags:
- Linux
categories:
- Linux
top_img: false
cover: '/upload/cdn0files/20200721094935.jpg'
abbrlink: 5ab84722
date: 2019-12-17 14:34:11
updated: 2019-12-17 14:34:11
整理几个Linux下监控系统性能等状态的命令和工具
top
top
命令的汇总区域显示了五个方面的系统性能信息:
- 负载:时间,登陆用户数,系统平均负载;
- 进程:运行,睡眠,停止,僵尸;
- cpu:用户态,核心态,NICE,空闲,等待IO,中断等;
- 内存:总量,已用,空闲(系统角度),缓冲,缓存;
- 交换分区:总量,已用,空闲
任务区域默认显示:进程ID,有效用户,进程优先级,NICE值,进程使用的虚拟内存,物理内存和共享内存,进程状态,CPU占用率,内存占用率,累计CPU时间,进程命令行信息。
ps
ps
参数太多,具体使用方法可以参考``man ps`,常用的方法:
$ ps aux #hsserver
$ ps –ef | grep #hundsun
- 杀掉某一程序的方法:ps aux | grep mysqld | grep –v grep | awk ‘{print $2 }’ xargs kill -9
- 杀掉僵尸进程:ps –eal | awk ‘{if (2 == “Z”){print 4}}’ | xargs kill -9
netstat
Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
$ netstat –npl ## 可以查看你要打开的端口是否已经打开。
$ netstat –rn ## 打印路由表信息。
$ netstat –in ## 提供系统上的接口信息,打印每个接口的MTU,输入分组数,输入错误,输出分组数,输出错误,冲突以及当前的输出队列的长度。
htop
需要安装
htop
是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要ncurses
。Htop可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。
uptime
uptime
能够打印系统总共运行了多长时间和系统的平均负载,uptime
命令最后输出的三个数字的含义分别是1分钟,5分钟,15分钟内系统的平均负荷。
lsof
lsof
(list open files)是一个列出当前系统打开文件的工具。通过lsof
工具能够查看这个列表对系统检测及排错,常见的用法:
$ lsof /boot ## 查看文件系统阻塞
$ lsof -i : 3306 ## 查看端口号被哪个进程占用
$ lsof –u username ## 查看用户打开哪些文件
$ lsof –p 4838 ## 查看进程打开哪些文件
$ lsof –i @192.168.34.128 ## 查看远程已打开的网络链接
strace
需要安装
strace
跟踪程序执行过程中产生的系统调用及接收到的信号,帮助分析程序或命令执行中遇到的异常情况。举例:
查看mysqld
在linux上加载哪种配置文件,可以通过运行下面的命令
$ strace –e stat64 mysqld –print –defaults > /dev/null
iotop
需要安装
iotop
命令是专门显示硬盘IO的命令,界面风格类似top
命令,可以显示IO负载具体是由哪个进程产生的。是一个用来监视磁盘I/O使用状况的top
类工具,具有与top
相似的UI,其中包括PID、用户、I/O、进程等相关信息。可以以非交互的方式使用iotop –bod interval
。
dstat
需要安装
dstat
显示了cpu使用情况,磁盘io情况,网络发包情况和换页情况,输出是彩色的,可读性较强,相对于vmstat
和iostat`的输入更加详细且较为直观。在使用时,直接输入命令即可,当然也可以使用特定参数。
vmstat
VirtualMeomoryStatistics(虚拟内存统计)是Linux中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU等的整体情况进行监视。
vmstat
的常规用法:vmstat interval times
即每隔interval
秒采样一次,共采样times
次,如果省略times
,则一直采集数据,直到用户手动停止为止。可以使用ctrl+c
停止vmstat采集数据。
第一行显示了系统自启动以来的平均值,第二行开始显示现在正在发生的情况,接下来的行会显示每5秒间隔发生了什么,每一列的含义在头部,如下所示:
- procs:
r
这一列显示了多少进程在等待cpu,b列显示多少进程正在不可中断的休眠(等待IO)。 - memory:
swapd
列显示了多少块被换出了磁盘(页面交换),剩下的列显示了多少块是空闲的(未被使用),多少块正在被用作缓冲区,以及多少正在被用作操作系统的缓存。 - swap:显示交换活动:每秒有多少块正在被换入(从磁盘)和换出(到磁盘)。
- io:显示了多少块从块设备读取(bi)和写出(bo),通常反映了硬盘I/O。
- system:显示每秒中断(in)和上下文切换(cs)的数量。
- cpu:显示所有的cpu时间花费在各类操作的百分比,包括执行用户代码(非内核),执行系统代码(内核),空闲以及等待IO。
内存不足的表现:free memory
急剧减少,回收buffer
和cacher
也无济于事,大量使用交换分区(swpd)
,页面交换(swap)
频繁,读写磁盘数量 (io)
增多,缺页中断(in)
增多,上下文切换(cs)
次数增多,等待IO的进程数(b)
增多,大量CPU时间用于等待IO(wa)
。