命令 | 性能信息的种类 | 在哪里测量 | 能知道的信息 | 不能知道的信息 | 其他 |
sar | 概要形式 | OS级 | CPU的使用率和空闲情况、读写I/O的量、内存的概况等信息 | 各个进程的情况、瞬间的性能问题、可能导致问题的程序或进程、超线程等CPU中实际的CPU使用情况 | 消耗资源少 |
vmstat | 概要形式 | OS级 | 等待执行的平均进程数、由于某些原因而被迫等待(被阻塞)的平均进程数。CPU使用率,对SWAP空间的IO、通常的IO、上下文切换次数等 | 各个进程的情况、瞬间的性能问题、可能导致问问题的程序或进程、CPU核的差异情况 | |
ps | 快照形式 | OS级 | 某个瞬间存在哪些进程、某个瞬间进程的状态、进程的名称或命令、进程的编号、各进程的CPU累计时间等 | 内存和CPU使用率等OS的情况 | 命令负载较大,不能再短时间内重复执行 |
netstat | 概要形式、快照形式 | 驱动级别 | -a:瞬间的套接字、-r:瞬间的路由信息、-i:各接口的统计信息 | 无法知道网络是否出了问题 | |
iostat | 概要形式 | 块设备级别 | 磁盘的使用率、通过-x参数,知道响应时间和各种队列的长度 | IOPS的概念 | |
top | 快照形式 | OS级别 | OS整体情况,每隔几秒显示一下,并整理出活跃的进程 | 不知道非活跃进程的信息 | 负载稍高 |
tcpdump | 事件记录 | 驱动级别 | 详细把握正在进行什么通信 | ||
pstack | 快照形式 | OS级别 | 某个程序瞬时的调用栈的信息 | 由于是快照形式,无法判断是否一直是相同的状态。由于是从OS级别获取,可能会与应用程序端调用的函数名有差异 | 负载很低 |
stace | 事件记录 | OS级别 | 某个进程的系统调用信息,在等待哪个系统调用、哪个函数比较耗时 | 不能知道在应用程序内部的哪个地方比较耗时 | 负载很高,非必要情况不适用 |
Profiler | 概要形式 | OS级别 | 某个进程的各个函数的处理时间 | 不能对瞬间的故障原因进行追查 | 需要在编译是加-g选项 |
一个概念:响应时间=访问等待时间+服务时间