Linux性能统计命令
概述
使用场景
- 性能测试
- 性能分析
统计维度
- 系统级别
- 进程级别(更多使用)
常用性能指标
-
cpu 代表算法的高效性
-
mem 代表数据结构的使用合理性
-
net io 等更多的指标,不合理使用同样会在cpu和mem中体现出影响
系统性分析:建立监控平台,promethus(搭载grafana)
临时性分析:命令交互
CPU性能指标
主要指令:
- top
-
获取cpu 信息
cat /proc/cpuinfo
-
打开top命令的帮助文档
man top
-
系统负载与进程cpu占用
top
- 启动时间,用户数,Tasks任务状态,%Cpu(s)当前CPU使用情况,MiB Mem内存使用情况,MiB Swap交换区使用情况,单个进程的CPU、内存使用情况
-
cpu 利用率 进程的cpu利用情况
-
load average 系统负债情况
(在ps命令中cpu利用率是平均利用率,不准确)
-
进程数据存在/proc/{pid}中
内存性能指标
主要指令:
- free
- ps
- top
-
获取内存使用数据
cat /proc/meminfo
-
打开free的帮助文档
man free
-
使用g或者m作为单位统计
free -g/-m
available
是指可以加上从buff/cache
中可获取出来的内存,开启新进程时可用的内存 -
top命令
top
top命令中会显示虚拟内存,保留内存,共享内存都展示出来
-
内存区域
A区域指进程本身正在使用的内存,作为自己的保留内存,其他进程不可访问(Uss)
B区域指共享内存,如共享的dll、ios文件,共享的库文件,统一存放(Rss保留内存 = A+B)
RSS加起来可能会大于总内存(存在共享内存)
PSS表示A+B/n,进程平摊共享内存的大小
C区域指进程提前获取的空闲内存,用于后续准备,即虚拟内存
如果内存泄漏,则应该关注A区域,使用后未释放
-
ps命令
ps
获取当前时间系统的快照,可获取到内存情况
-
优化指令
ps -e -o uid,pid,ppid,pcpu,pmem,rss,vsz,comm --sort -%mem | head -10
提取出关键指标,cpu利用率,内存占用率,保留内存,虚拟内存等,并根据内存占用率排序
网络连接统计
- netstat
-
打开netstat帮助文档
man netstat
-
netstat命令
netstat -tlnp
- n: 表示用数字形式显示IP地址和端口号
- l: 表示监听(listening)的端口及其关联进程ID
- p: 显示进程pid值和进程名称
- t: 显示TCP协议相关的连接和监听套接字
- u: 显示UDP协议相关的连接和监听套接字
-
网络连接数达到上限
netstat -tn
-
Proto 协议
-
Recv-Q/Send-Q 接受和发送的字节数
-
Local Address/Foreign Address 本机地址和远程地址
-
State 当前连接状态
- 网络状态
- ESTABLISHED 成功连接 The socket has an established connection
- SYN_SENT The socket is actively attempting to establish a connection
- SYN_RECV A connection request has been received from the network.
- FIN_WAIT1 The socket is closed, and the connection is shutting down.
- FIN_WAIT2 Connection is closed, and the socket is waiting for a shutdown from the remote end
- TIME_WAIT 主动关闭 The socket is waiting after close to handle packets still in the network
- CLOSE The socket is not being used
- CLOSE_WAIT 被动关闭 The remote end has shut down, waiting for the socket to close.
- LISTEN The socket is listening for incoming connections
TIME_WAIT 和CLOSE_WAIT 会占用连接数,但却并非服务状态,需要统计是否处于该状态的线程数过多,已解决占用的问题
-
限制指标数
ulimit -a
获取到限制指标数
-
统计线程状态数
netstat -tn | awk 'NR>2{print $NF}'| sort | uniq -c | sort -nr
ps、top、netstat帮助文档需要熟练掌握