查看 Linux 内核版本
uname
查看 Linux 系统版本
cat /etc/issue
查看静态的进程
ps -ef
ps -aux
通过进程名查看 pid
pgrep 进程名称
查看动态的进程
top
第一行
load average:系统平均负载,三个值分别是平均最近5分钟、平均最近10分钟、平均最近15分钟,如果长时间大于1表示CUP忙不过来
user:表示登录用户数
Tasks
total:表示进程总数
running:表示正在运行的进程,一般 < 核数
sleeping:表示
stopped:被强行停止
zombie:僵尸进程
%Cpu(s)
us:表示用户进程使用百分比
sy:表示系统内核使用百分比,一般 < 5%
id:表示CPU空间时间百分比
wa:如果很大,说明磁盘很满,CPU等待磁盘时间长
hi:硬中断
si:软中断
KiB Mem
total:总内存
used:已使用内存
free:空闲内存
buffers:缓冲,马上要写入磁盘还没有写入磁盘,为了与磁盘交互提高效率
KiB Swap
total:总内存
used:已使用内存
free:空闲内存
cached:缓存
进程详细信息
PID:进程id
USER:所属用户
PR:优先级
VIRT:虚拟内存空间
SHR:共享内存空间
S:进程状态,R -- running,S -- sleeping
%CPU:CPU 占用百分比
%MEM:内存占用百分比
TIME:进程在CPU中运行的时间
COMMAND:进程是那个程序启动的
1)按 h 键,显示帮助信息(按 q 返回)
2)按 u,输入用户回车,可以过滤出该用户的进程
CPU耗用型进程分析
分析 CPU 步骤:
1、load average > 核数,running > 核数,说明存在进程等待
2、%id = 0.0 ,说明 CPU 很忙,空闲时间为0
3、%wa = 0.0,说明没有磁盘等待,瓶颈不在磁盘
4、内存的 used < 50%,且无变化,瓶颈不在内存
可以看出该进程完全为 CPU 消耗性的,一般是进程中存在死循环,或大量的循环。
vmstat(虚拟内存统计)-- 低开销工具
vmstat 秒数
3秒钟显示一次结果
procs(进程)
r:运行的进程,同 top 的 running
b:阻塞的进程
memory
swpd:交换到磁盘
free:内存
buff:缓冲,即将要写入磁盘的数据,延迟写
cache:缓存,从磁盘读出来的数据,联想读
swap
si:swap 的换进
so:swap 的换出
io
bi:写磁盘
bo:读磁盘
system
in:系统终端
cs:上下文切换
cpu
us:用户态
sy:系统态
id:空闲态
wa:等待
查看内存信息
free
TCP 信息统计
netstat -tans
IcmpMsg(ICMP 消息统计)
InType:收到数量
OutType:发出数量
ICMP 消息较多时,会消耗系统网络带宽
可以在防火墙中设置拒绝 ICMP 消息
TCP
active connections openings:打开的 TCP 连接数
failed connection attempts:失败的 TCP 连接
segments received:收到的数据段个数
segments send out:发出的数据段个数
segments retransmited:重传数量,值较大时,说明网络不稳定,网络拥塞
TcpExt
TCP data loss events:丢包数量,说明网络拥塞
firewalld 防火墙禁止 ICMP 包
firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop' #禁止 ICMP 包 firewall-cmd --reload #重启防火墙
查看磁盘信息
df -h
IO 耗用型进程分析
1)新建脚本 dd.sh(将 test.log 的数据写入 conteng.log 文件中,每次写 100M,写 50次)
dd if=/test/test.log of=conteng.log bs=100M count=50
2)执行脚本,并使用 vmstat 命令查看系统资源信息
./dd.sh vmstat 3
分析步骤:
1、r = 3 > 核数,说明存在进程等待
2、us = 5%,sy = 90%,用户进程使用CPU很少,系统使用CPU很多,因为写文件是系统调用;
3、bi、bo 很大,说明块的写入写出很多;
4、wa = 5%,CPU 使用5%的时间在等待,说明磁盘等待导致CPU卡顿。
可以看出瓶颈在磁盘,而不在 CPU