来源极客时间
uptime可查看系统平均负载:平均活跃进程数(可运行、不可中断)
cpu个数:grep ‘model_name’ /proc/cpuinfo | wc -l
mpstat:实时查看cpu性能指标(整体)
pidstat:实时查看进程的cpu、内存、io、上下文切换等性能指标
stress:压测
iostat:io状态
超过百分之70的使用率就该警醒
cpu上下文切换:进程/线程/中断上下文切换
vmstat:查看系统上下文切换情况、系统内存使用情况
pidstat -w可以查看每个进程上下文切换情况,-u输出cpu使用指标,-t输出线程指标
sysbench:模拟上下文切换过多、评估不同系统参数下的数据库负载情况
watch -d cat /proc/interrupts:查看中断的变化情况
上下文切换上w次,或者呈数量级增长,就该警醒
cat /proc/stat | grep ^cpu :cpu状态
cpu使用率:除了空闲时间外的其他时间占总cpu时间的百分比,可查看目录/proc/stat
ab:用来模拟压测
进程运行情况的统计信息:/proc/[pid]/stat
最常见的查看cpu使用率的命令:top、ps
结合pidstat,可查看具体进程的cpu使用情况
适合第一时间分析进程的cpu问题:perl,可以使用-g开启调用关系分析,-p指定pid
perl record -g 可以查看性能报告
execsnoop:可以监控短时进程
dstat:吸收了vmstat、iostat、ifstat,可同时观察cpu、io、网络、内存
僵尸进程:pstree找出父进程,看代码,检查wait调用或sigchld信号处理函数
不可中断状态进程:iowait升高,则用dstat、pidstat,确实是不是磁盘io的问题,再用ps找到d状态的进程,看谁哪些进程导致了io,如果变成了僵尸进程没啥信息了,可以perl看性能报告
ps aux | grep softirq:可查看软中断线程运行情况
sar:可以实时查看系统当前活动、查看历史统计数据,可查看每秒接受、发送的网络帧数、千字节数,可由此计算每帧的大小
Hping3:构造tce/ip协议数据包,可以测试系统
tcpdump:网络抓包工具
free:查看整个系统的内存的使用情况,也可以查看swap
top、ps:查看进程的内存使用情况
Buffer和Cache分别是磁盘和文件系统的读写数据缓存
pcstat:查看文件在内存中的缓存大小以及缓存比例
strace:观察系统调用
sar:-r/-S可查看内存/swap使用情况
memleak:检测内存泄露
pmap:分析进程地址空间中内存的使用情况
df:查看文件系统的磁盘空间使用情况
slabtop:查看slab的内存
fio:性能测试工具
iostat:提供了每个磁盘的使用率、iops、吞吐量等,其指标解读如下图
%util:磁盘io使用率
r/s+w/s:iops
rkb/s+wkb/s:吞吐量
r_await+w_await:响应时间
可以把观测到的平均请求队列长度或者读写请求完成的等待时间跟基准测试的结果进行对比,综合评估磁盘的饱和情况
pidstat -d和iotop:观察进程的io情况
lsof -p:查看进程打开了哪些文件
如果strace找不到系统调用,可以尝试filetop,主要用来跟踪内核中文件的读写情况,并输出线程id、读写大小、读写类型以及文件名称(基于ebpf机制)
opensnoo可以跟踪open调用
根据指标找工具:
根据工具找指标:
指标:带宽、吞吐量、延时、pps、网络可用性、并发连接数、丢包率、重传率
ifconfig和ip命令可以查看网络接口收发数据包的统计信息
ifconfig etho 、ip -s addr show dev eth0
netstat和ss可以查看socket、网络栈、网络接口、协议栈以及路由表的信息
Netstat -nlp、ss -ltnp
Bandwidth可以通过ethanol eth0 | grep Speed来查看
ping:测试远程主机的连通性和延时
网络层性能测试:hping3、pktgen
传输层tcp性能测试:iperf、netperf
应用层http性能测试:ab、webbench
应用负载性能:wrk、tcpcopy、jmeter
dns:nslookup可以查询到域名对应的ip和dns相关信息,如延迟等、dig可以查询递归查询的过程
tcedump、wireshark:dns没问题,但还是慢,则可以进行抓包分析
hping3也可以用来获取网络延迟,traceroute也可以(如果pnig不能用)
System tap:把用户提供的脚本,转换为内核模块来执行,用来监测和跟踪内核的行为(可以写一个跟踪内核函数的调用脚本)