1、cpu
工具
描述
uptime
平均负载
vmstat
包括系统范围的cpu平均负载
mpstat
查看所有cpu核信息
top
监控每个进程cpu用量
sar -u
查看cpu信息
pidstat
每个进程cpu用量分解
perf
cpu剖析和跟踪,性能计数分析
说明:
uptime,vmstat,mpstat,top,pidstat只能查询到cpu及负载的的使用情况。
perf可以跟着到进程内部具体函数耗时情况,并且可以指定内核函数进行统计,指哪打哪。
使用方式
//查看系统cpu使用情况
top
//查看所有cpu核信息
mpstat -P ALL 1
//查看cpu使用情况以及平均负载
vmstat 1
//进程cpu的统计信息
pidstat -u 1 -p pid
//跟踪进程内部函数级cpu使用情况
perf top -p pid -e cpu-clock
2、分析内存
工具
描述
free
缓存容量统计信息
vmstat
虚拟内存统计信息
top
监视每个进程的内存使用情况
pidstat
显示活动进程的内存使用统计
pmap
查看进程的内存映像信息
sar -r
查看内存
dtrace
动态跟踪
valgrind
分析程序性能及程序中的内存泄露错误
说明 :
free,vmstat,top,pidstat,pmap只能统计内存信息以及进程的内存使用情况。
valgrind可以分析内存泄漏问题。
dtrace动态跟踪。需要对内核函数有很深入的了解,通过D语言编写脚本完成跟踪。
使用方式
//查看系统内存使用情况
free -m
//虚拟内存统计信息
vmstat 1
//查看系统内存情况
top
//1s采集周期,获取内存的统计信息
pidstat -p pid -r 1
//查看进程的内存映像信息
pmap -d pid
//检测程序内存问题
valgrind --tool=memcheck --leak-check=full --log-file=./log.txt ./程序名
3、io分析
工具
描述
iostat
磁盘详细统计信息
iotop
按进程查看磁盘IO的使用情况
pidstat
按进程查看磁盘IO的使用情况
perf
动态跟踪工具
使用方式
//查看系统io信息
iotop
//统计io详细信息
iostat -d -x -k 1 10
//查看进程级io的信息
pidstat -d 1 -p pid
//查看系统IO的请求,比如可以在发现系统IO异常时,可以使用该命令进行调查,就能指定到底是什么原因导致的IO异常
perf record -e block:block_rq_issue -ag
^C
perf report
4、网络分析
工具
描述
ping
主要透过 ICMP 封包 来进行整个网络的状况报告
traceroute
用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具
netstat
用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况
ss
可以用来获取socket统计信息,而且比netstat更快速更高效
host
可以用来查出某个主机名的 IP,跟nslookup作用一样
tcpdump
是以包为单位进行输出的,阅读起来不是很方便
tcpflow
是面向tcp流的, 每个tcp传输会保存成一个文件,很方便的查看
sar -n DEV
网卡流量情况
sar -n SOCK
查询网络以及tcp,udp状态信息
使用方式
//显示网络统计信息
netstat -s
//显示当前UDP连接状况
netstat -nu
//显示UDP端口号的使用情况
netstat -apu
//统计机器中网络连接各个状态个数
netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
//显示TCP连接
ss -t -a
//显示sockets摘要信息
ss -s
//显示所有udp sockets
ss -u -a
//tcp,etcp状态
sar -n TCP,ETCP 1
//查看网络IO
sar -n DEV 1
//抓包以包为单位进行输出
tcpdump -i eth1 host 192.168.1.1 and port 80
//抓包以流为单位显示数据内容
tcpflow -cp host 192.168.1.1
5、系统负载
工具
描述
top
查看系统负载情况
uptime
查看系统负载情况
strace
统计跟踪内核态信息
vmstat
查看负载情况
dmesg
查看内核日志信息
使用方式
//查看负载情况
uptime
top
vmstat
//统计系统调用耗时情况
strace -c -p pid
//跟踪指定的系统操作例如epoll_wait
strace -T -e epoll_wait -p pid
//查看内核日志信息
dmesg