一、top 命令详解
- 当前时间 20:27:12
- 当前系统运行时间 3:18秒
- 1个用户
- 系统负载平均长度为 0.00,0.00,0.00(分别为1分钟、5分钟、15分钟前到现在的平均值)
- 第二行为进程状态的汇总 R 运行态、S 睡眠态、T 被跟踪或已停止、Z 僵尸态
解析:
0.0%us |
用户空间占用CPU百分比 |
0.0%sy |
内核空间占用CPU百分比 |
0.0%ni |
用户进程空间内改变过优先级的进程占用CPU百分比 |
100.0%id |
系统目前空闲CPU百分比 |
0.0%wa |
等待输入输出I/O的CPU时间百分比 |
0.0%hi |
硬中断占用CPU百分比 |
0.0%si |
软中断占用CPU百分比 |
- 当 id 持续过低时,表示系统迫切需要解决 cpu 资源问题
- cpu 的使用率=1-%id
解析:
Men:1906556k total |
物理内存总量 |
Men:695372k used |
使用的物理内存总量 |
Men:1211184k free |
空闲内存总量 |
Men:86244k buffers |
用作内核换成的内存量 |
Swap:2097144k total |
交换区总量 |
Swap:0k used |
使用的交换区总量 |
Swap:2097144k free |
空闲交换区总量 |
Swap:175672 cached |
缓冲的交换区总量 |
- buffer 和 cache 的作用是缩短 I/O 系统调用的时间(缓存,会占物理内存),如果 cache 的值很大,说明 cache 里面的文件很多,如果频繁的访问文件都能命中的话,很明显这样会比读取磁盘调用快,磁盘的 I/O 必定会减小。 但是如果系统内存不足时,buffer/cache 所占用的内存可以通过 drop cache 进行释放出来
- 物理内存总数 Mem_total = Men_used + Mem_free
- 实际使用的物理内存数 - buffers/cache = used - buffers - cache
- 实际可用的物理内存数 + buffers/cache = free + buffers + cache
- 交换分区对应的内存总数 Swap_total = swap_used + swap_free
解析:
%CPU |
进程所占用的CPU的百分比 |
%MEM |
进程使用的物理内存百分比 |
二、性能分析过程
检查 RT(响应时间) |
完成一笔业务的时间 2/5/8原则 |
检查 TPS(吞吐量) |
TPS 大时 RT 小,说明性能好 |
检查 web 服务器资源损耗 |
1.检查 cpu 使用率,确认用户 cpu 和系统 cpu 占用情况 2.检查内存使用情况 3.检查磁盘使用情况 4.检查占用的带宽 5.分析 web 页面确认是什么请求影响了性能 6.是否存在前端图片过多加载时间过长问题 |
是否有 DB 性能问题 |
1.数据库最大连接数 |
是否是 SQL 问题 |
1.不合理的查询 SQL 2.索引是否正常使用 3.是否有做临时表缓存 |
三、性能指标参考值
1.cpu
注意 >= 50%
告警 >= 70%
严重 >= 90%
2.内存
注意 >= 50%
告警 >= 70%
严重 >= 80%
3.系统 IO 利用率(I/O(input/output)字面理解就是输入/输出,输入指的是对磁盘写入数据,输出指的是从磁盘读出数据。)
注意 >= 40%
告警 >= 60%
严重 >= 80%