系统性能分析
# 常用命令
查看 CPU 核数
cat /proc/cpuinfo | grep "cpu cores" | wc -l
top 按指定字段排序
top -o RES
ps 查询资源占用
# 按照 cpu 使用情况排序
ps -aux --sort -pcpu | less
# 按照 memory 和 cpu 使用情况排序,只看前 10 个
ps -aux --sort -pmem,pcpu | head -n 10
# 指定应用程序, php 和 php-fpm
ps -C php-fpm,php -o user,pid,pcpu,pmem,rss,start,time,command --sort -pmem
# 每 2 秒刷新一次
watch -n 2 "ps -aux --sort -%mem | head -n 10"
# TOP 命令
第一行
- load average: 0.02, 0.04, 0.00: 系统1分钟、5分钟、15分钟的CPU负载信息
第二行
第三行
Cpu(s):表示这一行显示CPU总体信息
0.0%us:用户态进程占用CPU时间百分比,不包含renice值为负的任务占用的CPU的时间
0.7%sy:内核占用CPU时间百分比
0.0%ni:改变过优先级的进程占用CPU的百分比
99.3%id:空闲CPU时间百分比
0.0%wa:等待I/O的CPU时间百分比
0.0%hi:CPU硬中断时间百分比
0.0%si:CPU软中断时间百分比
注:这里显示数据是所有cpu的平均值,如果想看每一个cpu的处理情况,按1即可;折叠,再次按1;
第四行
- Men:内存的意思
- 8175320k total:物理内存总量
- 8058868k used:使用的物理内存量
- 116452k free:空闲的物理内存量
- 283084k buffers:用作内核缓存的物理内存量
第五行
- Swap:交换空间 (需要开启交换区才显示此项数据)
- 6881272k total:交换区总量
- 4010444k used:使用的交换区量
- 2870828k free:空闲的交换区量
- 4336992k cached:缓冲交换区总量
# 进程信息
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NI:值 Nice Value,表示静态优先级,范围是-20~+19,Nice值越大的进程的实际优先级越小,默认是 0
VIRT:Virtual Memory Size (KiB) 进程占用的虚拟内存,单位都是 KB。(进程执行时总的虚拟内存,并不一定完全映射到了物理内存上)
RES:Resident Memory Size (KiB) 进程占用的物理内存。(实际已映射的物理内存,真实占用的内存)
SHR:Shared Memory Size (KiB) 进程使用的共享内存。(例如在动态编译中引入的动态库,不同进程会使用同一个动态库,这部分内存是共享的)
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
# free 命令
# 展示信息
total
物理总内存
used
当前正在运行的程序占用的总内存
free
未使用的内存,(free = total - used - buff/cache)
shared
进程间共享的内存
buffers
操作系统预留,当进程需要时分配
cached
最近使用的文件存储在 RAM 中
buff/cache
Buffers + Cache
available
在不交换空间的情况下,评估有多少内存可以用于启动新的应用程序