最近帮助现场分析服务器的卡顿和使用情况,记录一下用到过的一些命令行
1.top 命令监控所有服务的占用情况
记录下相关数据对应的信息
1.1 第一行
top - 14:09:54 up 55 days, 21:49, 3 users, load average: 1.51, 1.92, 2.12
翻译过来就是:
系统时间:14:09:54 运行时间:55 days, 21:49 当前登录用户数:3个 负载均衡:load average: 1.51, 1.92, 2.12
ps:
- 1.load average三个数字分别是 1分钟、5分钟、15分钟前的状态
- load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
1.2 第二行(进程状态)
Tasks: 813 total, 1 running, 812 sleeping, 0 stopped, 0 zombie
翻译:
总进程: 813total 运行:1 running 休眠:812 sleeping 停止: 0 stopped 僵尸进程: 0 zombie
1.3 第三行(CPU)
%Cpu(s): 1.2 us, 2.5 sy, 0.0 ni, 96.2 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
翻译:
1.2us(用户空间占用百分比) 2.5 sy(系统内核占用百分比) 0.0 ni(改变过优先级的进程占用CPU的百分比) 96.2 id(空闲cpu百分比) 0.0 wa(等待IO的百分比) 0.1 si(硬中断百分比) 0.0 st(软中断百分比)
这里关注用户占用和空闲cpu百分比
1.4 第四行(内存占用)
KiB Mem : 12359781+total, 26104952 free, 44029052 used, 53463812 buff/cache
翻译:
`total 总内存
free 空闲内存
used 已被使用
buffer/cache 缓存
`
1.5 第五行(swap交换分区)
KiB Swap: 0 total, 0 free, 0 used. 74735824 avail Mem
可用内存=free + buffer + cached
ps:这个就关注used,这个最好不被使用,如果被使用,说明服务器已经到内存占用非常严重的情况了
1.6 表格类数据
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
翻译:
- PID 服务进程ID
- USER 进程的所有人
- PR 进程优先级
- NI nice值,会出现负值,负值优先级更高
- VIRT 进程使用虚拟内存总量
- RES 共享内存大小
- kbS(简略为S) —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
- %CPU 上次更新到现在的CPU时间占用百分比
- %MEM 进程使用的物理内存百分比
- TIME+ — 进程使用的CPU时间总计,单位1/100秒
- COMMAND — 进程名称(命令名/命令行)
2. top命令行详解
top的使用方式 top [-d number] | top [-bnp]
参数 | 含义 |
---|---|
-d number | number代表秒数,表示top命令显示的页面更新一次的间隔 (default=5s) |
-b | 以批次的方式执行top |
-n | 与-b配合使用,表示需要进行几次top命令的输出结果 |
-p | 指定特定的pid进程号进行观察 |
top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的)
参数 | 含义 |
---|---|
? | 显示在top当中可以输入的命令 |
P | 以CPU的使用资源排序显示 |
M | 以内存的使用资源排序显示 |
N | 以pid排序显示 |
T | 由进程使用的时间累计排序显示 |
k | 给某一个pid一个信号,可以用来杀死进程(9) |
r | 给某个pid重新定制一个nice值(即优先级) |
q | 退出top(用ctrl+c也可以退出top) |
3. free 命令
使用free -h
可以查看linux的内存使用状态
各自的含义如下所示:
total 是总内存数;
used 是已经使用的内存数;
free 是空闲的内存数;
shared 是多个进程共享的内存总数;
buffers 是缓冲内存数;
cached 是缓存内存数
ps:使用free -m
也是可以的,而且还可以用MB为单位
4.iostat 命令
iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析
4.1 安装服务
部分设备无法直接使用这个服务,需要提前安装服务
# iostat属于sysstat软件包。可以直接安装。
yum install sysstat -y
4.2 使用
iostat 命令结果如下
cpu属性值说明:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
tps:该设备每秒的传输次数
kB_read/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read: 读取的总数据量;
kB_wrtn:写入的总数量数据量