用户响应时间(RT) = 服务器响应时间 + 网络时间
性能分析思路:
- CPU利用率
- 内存利用率
- 磁盘I/0的利用率和延迟
- 网络利用率
Linux监控命令:
top命令:查看CPU、内存、磁盘I/0的使用情况
第一行,任务队列信息,同 uptime 命令的执行结果
系统时间:07:27:05
运行时间:up 1:57 min,
当前登录用户: 3 user
负载均衡(uptime) load average: 0.00, 0.00, 0.00
average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
如果这个数除以逻辑CPU(grep 'model name' /proc/cpuinfo | wc -l)的数量(load):
- 0.7 < load < 1: 此时是不错的状态,如果运行更多的进程任务,你的CPU仍然可以应付。
- load = 1: 你的CPU即将拥堵,而且没有更多的资源额外的任务,赶紧看看发生了什么吧。
- load > 5: 非常严重拥堵,我们的CPU非常繁忙,每个进程任务都无法很快的运行
怎么看:
通常我们先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。
1分钟负载值 > 1,那么我们不用担心,但是如果15分钟负载都超过1,我们要赶紧看看发生了什么事情。所以我们要根据实际情况查看这三个值。
第三行,cpu状态信息
0.0%us【user space】— 用户空间占用CPU的百分比。
0.3%sy【sysctl】— 内核空间占用CPU的百分比。
0.0%ni【】— 改变过优先级的进程占用CPU的百分比
99.7%id【idolt】— 空闲CPU百分比
0.0%wa【wait】— IO等待占用CPU的百分比
0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比
0.0%si【Software Interrupts】— 软中断占用CPU的百分比
第四行,内存状态
1745.8 total, 1105.6 free, 162.6 used, 477.6 buff/cache【缓存的内存量】
第五行,swap交换分区(虚拟磁盘分区)信息
0.0 total, 0.0 free, 0.0 used. 1436.5 avail Mem 【缓冲的交换区总量】
备注:
可用内存=free + buffer + cached
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,
第四行中空闲内存总量(free)是内核还未纳入其管控范围的数量。
纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
sar命令:查看CPU的使用情况
%user 用户空间的CPU使用
%nice 改变过优先级的进程的CPU使用率
%system 内核空间的CPU使用率
%iowait CPU等待IO的百分比
%steal 虚拟机的虚拟机CPU使用的CPU
%idle 空闲的CPU
备注:
主要看%iowait和%idle,%iowait过高表示存在I/O瓶颈,即磁盘IO无法满足业务需求;
如果%idle过低表示CPU使用率比较严重,需要结合内存使用等情况判断CPU是否瓶颈。
free命令:查看内存使用情况
总结:
- 优先使用
top
命令,这个基本可以查看CPU和内存、swap所有的运行状态。 - CPU的更详细信息的可以用
sar
查看 - 内存的更详细信息可以用
free
查看 - 发现是Java程序占用过高时,则可以使用Java自带的命令(jstat、jmap等)查看更详细的情况
监控软件:
- Spotlight:监控数据库、服务器CPU、内存等使用情况
- 阿里云:自带的的监控图表可以查看
平台监控实践:
Linux:
- 使用
top -b -l 10 > filepath/top.log
命令编写记录服务器性能日志脚本 - 将top.log中的数据处理为EXCEL识别的格式
- 使用EXCEL将数据分析为折线图;
Windows:
- 使用【资源监视器】查看
Java性能监控:Probe
概念理解:
jar包:将一段实现特定功能的独立代码打成一个包
Tomcat:中间件,也是一个容器。将HTTP server的基础功能都实现,开发只需要关注业务代码的实现;
JVM:Java虚拟机,所有的Java代码都需要在其上才能运行,如Tomcat、Java程序等。是一个容器。
中间件:Tomcat、mq等
监控Java的性能,本质就是监控JVM
使用:
- 在Probe官网下载war包
- 将war包放到%TOMCAT_HOME%/webapps/目录下
- 配置文件中增加manager、manager-gui权限、开启远程监控;
- 重启Tomcat
- 浏览器访问:http://主机ip/prober
MySQL性能监控:MONyog
性能分析方法:
生成负载,监控服务器性能指标