top #查看进程实时消耗的资源
x #可以突出显示某一列
shift+< 或 shift+> 可以移动,使用不同的列进行排序
RES列表示进程当前占用的物理内存大小
虚拟内存和物理内存的意思:每个程序都有自己独立的地址空间,进程A访问地址X和进程B访问
地址X不会有任何关系,因为他们使用不同的地址空间,这就是虚拟内存;磁盘上一个2GB的应
用程序开始执行的时候不会一次把2GB的文件全部加载到内存,只有发生读写的时候,数据才会
从磁盘加载到内存,加载到内存以后就占用了物理内存,这就是RES代表的意义。
vmstat #统计系统整个系统的性能数据
这是一个很全面的性能分析命令
列 意义
r 当前可运行进程数量,如果这个值一直高于cpu数量(lscpu可以查看系统cpu数量),就说
明服务器cpu数量不够
b 处于阻塞状态的进程数量,可能是在等待磁盘io,数据库服务器上大量读写时可以看到这一 列不为0
si/so 交换分区的读写情况,如果持续不为0或者大量读写,那就可能要考虑增加内存了
bi/bo 磁盘读写情况,可以用来计算当前磁盘读写速度
us cpu运行在用户态的比例
sy cpu运行在内核态的比例,一般服务器这个值不会很高,我的经验是超过20%就可能不正常
id cpu处于空闲状态的比例
wa 当大量读写磁盘时这一列不为0
常规使用vmstat -w 1 #每秒打印一次统计数据
其他列没什么经验可讲,就不做介绍
sar #可以详细分析系统性能
这个命令可以比vmstat更加详细的分析系统性能情况
sar -dz 1 #每秒打印一次磁盘读写情况
-z 不打印全为0的页,方便观察
sar -n DEV 1 #打印网卡流量速度
sar -n EDEV 1 #打印网卡错误统计信息
sar -n NFS #打印nfs客户端nfs相关调用数据
sar -n NFSD #打印nfs客户端nfs相关调用数据
sar -u ALL 1 #打印cpu统计信息
sar -r ALL 1 #打印内存统计信息
建议:多结合实际环境用命令观察系统状态,特别是对异常系统的分析
后面我会讲下更高级的性能分析工具perf和bpf