性能指标 | 工具 | 说明 | 用法举例: |
平均负载 | Top Uptime | Uptime:最简单; Top:提供了更全的指标(平均负载、运行队列、整体的CPU使用率以及每个进程状态和CPU使用率) | Top: M:根据驻留内存大小进行排序 P:根据CPU使用百分比大小进行排序 H:显示线程 c:显示正在运行的进程的绝对路径 1:显示每个cpu性能指标 |
系统整体CPU使用率 | vmstat mpstat sar top | Top; Vmstat: 系统整体的CPU使用率、上下文切换次数、中断次数,还包括处于运行和不可中断状态的进程数; Mpstat: 每个CPU的使用率和软硬中断CPU使用率; Sar: 系统整体的CPU使用率,包括可配置的历史数据; top、 vmstat、 mpstat 只可以动态杳看,而 sar还可以记录历史数据。 | # vmstat ?-w ?1 刷新间隔1秒,-w 扩大显示长度。 # mpstat ?-P ?ALL ?1 显示所有CPU性能指标,刷新间隔1秒 # sar??-P ?ALL ?1?? 显示所有CPU性能指标,刷新间隔1秒 |
进程CPU使用率 | Top Pidstat Ps pstree | Pidstat:进程和线程的CPU使用率、中断上下文切换次数; Top和ps可以按CPU使用率给进程排序,而pidstat只显示实际用了CPU的进程。 Pstree:显示父子进程关系 | # ps??-aux ?--sort ?-pmem 根据?内存使用?来升序排序 #ps??-aux ?--sort ?-pcpu 根据?CPU使用?来升序排序 # pidstat??1 显示各活动进程的cpu使用统计,刷新间隔1秒 # pidstat ?-p ?4324??1 ? 显示指定进程的CPU使用统计,刷新间隔1秒 #pstree ?-g 显示带PID父子进程关系 |
系统上下文切换 | vmstat | 除了上下文切换次数,还提供运行状态和不可中断状态进程的数量。 | ?# vmstat ?-w ?1 |
进程上下文切换 | pidstat | 加上 -w选项,线程加上 -t 选项 | # pidstat??-w ?1?? -w 显示进程上下文切换次数,重点关注自愿上下文切换和非自愿上下文切换数。 # pidstat ?-w??-p ?778??1 显示指定进程778的上下文切换次数,刷新间隔1秒 # pidstat ?-wt ?1?? -t 显示线程上下文切换次数。刷新间隔1秒 |
软中断 | Top mpstat | Top、mpsta提供软硬中断CPU使用率; | #mpstat ?-P ?ALL ?1 |
硬中断 | vmstat | vmstat提供每秒硬中断次数, | #vmstat ?-w ?1 |
网络 | dstat sar tcpdump | dstat和sar提供总的网络接收和发送情况,而tcpdump则是动态抓取正在进行的网络通讯 | # dstat ??1 显示总的网络接受和发送情况,刷新间隔1秒 # sar??-n ?DEV ?1 显示详细网络性能,刷新间隔1秒 #tcpdump ?-i ?ens33 ?-vnn ?port 22 抓取指定接口和端口的数据包 |
I/O | dstat sar | dstat和sar提供了I/O的整体情况 | # dstat ??1 显示全部I/O # sar ?-d ?1 显示全部磁盘IO情况,刷新间隔1秒 |
事件剖析 | Perf Execsnoop | Perf:可以用来分析CPU的缓存以及内核调用链,CPU调度等 Execsnoop:用来监控短时进程追踪。 用法: https://github.com/brendangregg/perf-tools/blob/master/execsnoop 脚本下载+x权限。 | # perf ?top 显示占用CPU时钟最多的的函数或者指令,可以用来查找热点函数。 perf top ?-g??-p ?10277 -g 开启调用关系分析,-p指定进程号 # perf ?record??-g ?-p 10277 保存性能事件 # perf??report 查看性能事件 #./?Execsnoop 追踪短时进程(瞬时进程),top或ps不容易发现。 |
性能指标 | 工具 | 说明 | 用法举例: |
系统已用、可用、剩余内存 | free vmstat sar | Free:系统已用、可用、剩余内存以及缓存和缓冲区用量。 Vmstat:系统剩余内存、缓存、缓冲区、换入、换出 Sar:系统内存换页情况、内存使用率、缓存和缓冲区用量以及swap使用情况。 | # vmstat ?-w ?1 # free ?-mt # sar ?-r ?1 显示内存利用率,刷新间隔1秒 |
进程虚拟内存、常驻内存、共享内存 | Ps Top | Top、ps:进程虚拟、常驻、共享内存以及缺页异常 | Top: M:根据驻留内存大小进行排序 # ps??-aux ?--sort ?-pmem 根据?内存使用?来升序排序 |
进程内存分布 | Pmap | Pmap:进程地址空间和内存状态 | # pmap ?-x ?2028 -x 显示扩展格式,-d 显示设备格式 |
进程缺页异常 | Pidstat | Pidstat:显示各活动进程的内存使用统计,缺页异常次数;注意加上-r选项。 | # pidstat??-r ?1? 显示各活动进程的内存使用统计,缺页异常次数,刷新间隔1秒 # pidstat??-r ?-p ?3334 ?1? -p 显示指定进程内存使用情况,刷新间隔1秒 |
系统换页情况 | Sar | Sar:系统内存换页情况、内存使用率、缓存和缓冲区用量以及swap使用情况;注意加上-B选项 | # sar??-r -?B ?-S ?1?? -r显示内存使用率、-B显示内存换页、-S显示swap ?刷新间隔1秒 |
缓存/缓存区用量 | Free Vmstat Sar Slabtop | Cachestat:系统缓存和缓冲区的命中率; Slabtop:系统slap缓存使用情况 | # free ?-mt # vmstat ?-w ?1 # sar ?-r ?-1 #?Slabtop ?实时显示内核slap缓存区的详细信息 |
缓存/缓存区命中率 | Cachetop Cachestat | Cachetop:进程缓存和缓冲区的命中率 Cachestat:系统缓存和缓冲区命中率 安装:bcc-tools 系统内核:4.1以上 | # cachestat??1 # cachetop |
Swap换入换出 | Vmstat Sar | # vmstat ?-w ?1 # sar ?-W ?1 ?每秒从交换分区到系统的交换页面换入换出数量 | |
内存泄露检查 | Memleak Valgrind | Valgrind:进程内存错误检测器,用来检测内存初始化、泄露、越界访问等各种内存错误,?Valgrind不能指定PID进行分析,一般用在发现内存泄漏线下分析; Memleak:内存泄漏检查。 | memleak ?-p ?$(pidof app) ?-a -p 指定进程PID,-a 显示每个内存分配请求的大小以及地址; #Valgrind?--tool=memcheck --leak-check=full? 执行程序名 |
性能指标 | 工具 | 说明 | 用法举例: |
文件系统空间容量、使用量以及剩余空间 | df | df:磁盘空间和索引节点使用量和剩余量 | #df -Th |
索引节点容量、使用量以及剩余量 | df | df: 加 –?i ?选项 | #df ?-ih |
页缓存和可回收Slab缓存 | Sar Vmstat | Sar : 加 –?r ?选项 | #sar ?-r ?1 #vmstat ?-w ?1 |
缓冲区 | Sar Vmstat | Sar : 加 –?r ?选项 | #sar ?-r ?1 #vmstat ?-w ?1 |
目录项、索引节点以及文件系统缓存 | Slaptop | Slaptop:目录项、索引节点以及文件系统缓存 | #?slaptop |
磁盘I/O使用率、IOPS、吞吐量、响应时间、I/O平均大小以及等待队列长度 | iostat sar Dstat | Iostat:磁盘I/O使用率、IOPS、吞吐量、响应时间、I/O平均大小以及等待队列长度; Sar:磁盘I/O使用率、IOPS、吞吐量以及响应时间; Dstat:磁盘I/O使用率、IOPS、吞吐量; | # iostat??-d??-x ?1 -d –x ?表示显示所有磁盘I/O性能指标 # sar??-d ?1??-p 显示所有磁盘I/O性能指标,刷新间隔1秒 #dstat ?--top-mem ?--top-io ?--top-cpu 找出占用资源最高的进程和用户 |
进程I/O大小以及I/O延迟 | Pidstat Iotop | Pidstat:使用 –d 选项,显示进程I/O大小以及I/O延迟; Iotop:按I/O大小对进程排序; | # pidstat??-d ?1 显示活动进程I/0性能指标,刷新间隔1秒 # iotop 根据I/O大小对进程进程排序 |
块设备I/O事件追踪 | Blktrace | blktrace:跟踪块设备I/O事件 | # blktrace??-d ?/dev/sda -o - | blkparse -i – 输出到终端用“-”表示,可是都是一堆二进制东西,没法看,所以需要实时blkparse来解析; Blkparse?的“-i”后加文件名,blktrace输出为“-“代表终端,blkparse也用“-”来代表终端解析 |
进程I/O系统调用追踪 | Strace Perf | strace:通过系统调用跟踪进程的I/O perf ?trace:跟踪内核中的I/O事件。 Strace 只可以跟踪单个进程,而perf ?trace可以跟踪所有进程的系统调用。 | # strace??-p ?32432 -p 指定跟踪PID号;配合lsof ?-p ?32432?分析; # strace??-f ?-T ?-tt ?-p ?32432 -f 表示跟踪子进程和线程,-T 表示显示系统调用的时长,-tt 显示跟踪事件。 |
进程块设备I/O大小跟踪 | Biosnoop biotop | 需要安装bcc工具包,内核大于4.1 | |
动态追踪 | Ftrace Bcc Systemtap | Ftrace 用于跟踪内核函数调用栈,而bcc和systemtap则用于跟踪内核或应用程序的执行过程 注意:内核大于4.1,需要从源码安装 |
性能指标? | 工具 | 说明 | 用法举例: |
吞吐量(BPS) | Sar Iftop nethogs | Sar:查看网络接口的网络收发情况 Iftop:查看IP的网络收发情况 Nethogs:查看进程的网络收发情况 | #?sar -n DEV 1 显示所有网卡收发情况,刷新间隔1秒 #?iftop -i eth1 监控eth1网卡收发情况 #?nethogs -d 1 ?eth1 ?eth2 查看每个进程使用的带宽,刷新间隔1秒 |
吞吐量(PPS) | Sar | #?sar ?-n ?DEV 1 | |
网络连接数 | Netstat Ss | Netstat:显示与IP、TCP、UDP和ICMP协议相关的统计数据 Ss:获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快; | #?ss –ltnpu 显示所有tcp/udp协议链接信息 #netstat ?-ltnpu 显示所有tcp/udp协议链接信息 |
网络错误数 | Netstat Sar | #netstat ?-i 显示数据链路层信息统计 #netstat??–i 显示网络层和传输层信息统计 # sar -n ?EDEV??1 显示数据链路层网络信息统计 # sar -n ?EIP ?1 显示网络层信息统计 | |
延迟 | ping | Ping:基于icmp协议 hping3:基于tcp协议测试网络连通性。 | ping ?-c3??114.114.114.114 hping3 –c ?3 ?-S ?-p ?8080 ?192.168.1.11 -c 表示发送3次请求、-S表示设置TCP ?SYN 、-p 表示端口号为80 |
连接跟踪数 | conntrack | Conntrack:查看和管理连接跟踪状况 | #?Conntrack??-L ?-o ?extended -L ?表示列表 ?-o 表示已扩展格式显示 查看链接追踪表内容 |
路由 | mtr | 查看路由并测试链路信息 | # mtr??134.64.57.129 详细记录主机间流量状况。 #Route??–n 显示本机路由表信息 #traceroute??--tcp ?-p ?80 ?-n ?taobao.com --tcp 使用tcp协议,-p 表示端口,-n 不对结果IP进行反向域名解析 追踪到目标主机的路由信息。 #traceroute??-p ?8080 ?-n ?taobao.com 使用UDP协议追踪。 |
DNS | dig | dig、nslookup:排查DNS解析问题; dig可动态追踪解析过程 | #?nslookup??www.baidu.com 查询主机DNS记录信息 #dig ?+trace??+nodnssec???www.baidu.com +trace?表示开启动态追踪,+nodnssec?表示禁止DNS安全扩展 动态追踪DNS解析过程 |
防火墙和NAT | iptables | Iptables:配置和管理防火墙及NAT规则 | |
网卡功能 | ethtool | ethtool:查看和配置网络接口 | #ethtool -S eth0 查看网卡收发包统计 # ethtool ?-l ?eth0、 查看网卡是否支持多队列 |
抓包 | Tcpdump Wireshark | Tcpdump:网络抓包工具 Wireshark:网络抓包和图形界面分析工具 | #?tcpdump??-nn ?tcp ??port ?80 ?-w ?app.pcap 抓取80端口数据包保存为文件,用Wireshark分析; |
内核协议栈跟踪 | bcc perf | Perf:剖析内核协议栈的性能 Systemtap、bcc:动态追踪内核协议栈的行为。 | # perf ?record ?-g ?-p ?13788 |
工具 | 软件包 | repo镜像源 |
mpstat | sysstat-9.0.4-22.el6.x86_64 | Base |
Sar | Base | |
Pidstat | base | |
pstree | psmisc-22.6-15.el6_0.1.x86_64 | Base |
dstat | dstat-0.7.0-1.el6.noarch | Base |
tcpdump | tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64 | Base |
perf | 2.6以上内核自带工具 | base |
vmstat | procps-3.2.8-25.el6.x86_64 | Base |
pmap | base | |
Slabtop | base | |
Cachetop | bcc-tools需要内核版本为4.1或者更新的版本 | epel |
Cachestat | epel | |
Memleak | epel | |
blktrace | blktrace-1.0.1-6.el6.x86_64 | base |
strace | strace-4.5.19-1.17.el6.x86_64 | base |
iftop | 可源码安装 | epel |
nethogs | 可源码安装 | epel |
netstat | net-tools-1.60-110.el6_2.x86_64 | base |
ss | iproute-2.6.32-31.el6.x86_64 | base |
conntrack | 源码安装conntrack-tools 内核> = 2.6.18 | epel |
mtr | mtr-0.75-5.el6.x86_64 | base |
route | net-tools-1.60-110.el6_2.x86_64 | base |
traceroute | traceroute-2.0.14-2.el6.x86_64 | base |
dig | bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64 | base |
nslookup | base | |
ethtool | ethtool-3.5-1.el6.x86_64 | base |