CPU
1.先用top确定系统整体情况
- 系统CPU【sys】
- 用户CPU【us】
- 僵尸进程【zombie】
- 硬中断【hi】
- 平均负载【load average】
- 等待IO CPU【wa】
- 软中断【si】 查看 /proc/softirqs,【NET_RX】高,通过sar -n定位,【NET_TX】高,通过tcpdump定位
2.用vmstat(虚拟内存统计)进一步细化指标,并查看趋势
- 系统CPU sys指标偏高,查看上下文切换次数【cs】
- 硬中断hi偏高,查看中断次数【in】,细看/proc/interrupts
- 平均负载高,查看运行状态进程数【r】,不可中断进程数【b】=>通过IO分析工具进一步定位[dstat] [sar -d]
3.定位到进程pidstat
- 上下文切换较多,需要看自愿上下文切换【cswch】和非自愿上下文切换【nvcswch】
- 查看具体进程是用户CPU【usr】高,还是系统CPU【system】高
4.定位到具体代码strace和perf
- strace 用于系统CPU高,排查内核线程或者系统调用
- perf 用于用户CPU高,排查进程性能问题,实时显示占用CPU最多的函数,可以排查CPU占用100%的问题
- CPU使用率高但是占不到CPU高的应用=>execsnoop(监控短时进程)
内存
- 先用free 确定系统整体内存情况
- 系统已用内存【used】
- 系统空闲内存【free】
- 系统内存总数【total】
- 缓存/缓冲区【cache/buffer】
- swap已用空间【swap used】
- swap剩余空间【swap free】
- 用vmware/sar打印每秒趋势
vmware
- 系统剩余内存【free】
- 缓冲区【buff】
- 缓存【cache】
- 虚拟内存大小【swpd】,如果swpd不为0,SI SO为0对性能没影响
- 磁盘换入内存SI
- 内存换入磁盘SO
- 确认内存问题
memleak
strace
valgrind
slabtop
/proc/buddyinfo
pidstat/top(内存使用率 虚拟内存 常驻内存 缺页异常)
pmap
/proc/pid/status
/proc/pid/smaps
cachetop
slabtop
cachestat
pcstat
IO
- 先确认整体IO情况
iostat -d -x 1
- I/O使用率【%util】
- IOPS【r/s w/s】
- 吞吐量【rkb/s wkb/s】
- 响应时间【svctm】
- 确认IO瓶颈
pidstat -d 1
- 进程IO读【kB_rd/s】
- 进程IO写【kB_wr/s】
- 进程IO延迟【iodelay】
vmstat 2 5
- iowait%【wa】
- cache【cache】
- buffer【buff】
- swap换入【si】
- swap换出【so】
- 确认IO来源
df/du
perf
blktrace
biosnoop
biotop
strace
lsof
/proc/meminfo
/proc/slabinfo
pcstat
slabtop
cachetop
cachestat