一、性能监控指标及命令:
1. cpu:服务器的核数直接影响cpu即运算(处理事务)能力
命令:top
us(user):用户态CPU使用时间占比
sy(system):内核态CPU使用时间占比
ni(nice):低优先级用户态使用时间占比
id(idle):空闲的CPU时间比例,值越大,CPU空闲时间比例越高,利用率越低
wa(iowait):IO等待状态的CPU时间比例
注:1. 一般情况下,如果%us+%sy<=70%,我们可以认为系统的运行状态良好。
2. iowait% 表示CPU等待IO时间占整个CPU周期的百分比,如果iowait值超过50%,或者明显大于%system、%user以及%idle,表示IO可能存在问题。
2. 内存:
命令:top、free –h
total = used + free
系统已用内存(used)包含buff/cache
3. 负载:负载即为计算机需要处理的事务的堆积情况,负载上去后理论上cpu占用应该很大(处于最大工作状态)
命令:top、uptime
三个数值分别表示1分钟、5分钟、15分钟内的平均负载情况
这里的平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,可以简单的理解为平均负载就是系统平均活跃进程数。
4. IO :
命令:iostat –x –k 2 3 //每隔2S输出磁盘IO的使用情况,共采样3次
注:占用IO过高,可以做如下考虑:
1)首先考虑写日志内容过多(或者访问量较大)
- 日志打印的内容是否合理( 前端应用服务器,要避免程序频繁打本地日志、或者异常日志)
- 日志级别是否合理
- 考虑异步写日志(一般可以解决CPU锯齿波动),为减少磁 盘IO操作,将日志写如内存分区;但日志量太大,很容易将内存 写满,再考虑将日志进行压缩。
2)磁盘满(压测过程中现象:TPS降低,响应时间增加)
- 找到导致磁盘满的大文件,合理的删除,最好有定期清理脚本,可以定期清理
- 对磁盘空间进行扩大磁盘容量
- 不好清理的,在主硬盘上进行读写操作,基础数据定时移动 到挂载硬盘上。
3)数据库连接数超限制,导致sleep比较多,sleep任务太多的处理:
- 程序里每次连接数据库后,记得关闭数据库。
- 或者,在mysql配置文件中,设置mysql超时时间wait_timout, 默认是八小时,设置低一点
4)数据库IO过高,查询量大,可以进行读写分离(增加读库)或者分库操作,减小磁盘压力,调优一些buffer参数以降低IO写的频率
5)磁盘IO过高是由于读写文件导致的: 可以利用raid来减轻压力
6)磁盘本身性能不足: 考虑更换新磁盘(性能强劲的)
5. 磁盘:磁盘占用过高时也会影响性能
命令1: fdisk –l //查看硬盘及分区情况
命令2:df –h //查看文件系统的磁盘空间使用情况
6. 网络:网络分为进和出两个即接收请求和发出响应,网络慢直接造成响应时间过长
网络带宽也是性能测试时要考虑的因素,如果并发量上不去很有可能就是网络带宽的原因。
7. 接口RT标准:一般为400ms以内,实际按业务要求
二、测试,结果分析
1. 不断增加并发的线程 -得到以下数据 :
a. 并发线程数-RT曲线;
b. 并发线程数-QPS曲线;
查看a曲线的RT允许范围内的最大线程数:x
再查看b曲线在最大线程数x下的QPS,该QPS为此服务器配置下的最大QPS
2. 性能调优:
查看在最大QPS时的cpu、内存负载情况,会出现不同的场景,根据不同场景进行性能瓶颈分析:
a. cpu比较高,负载也比较高;
b. 内存过高,cpu上不去;
c. IO过高
d. ......
三、性能指标
1、硬件上的性能瓶颈:
一般指的是CPU、内存、磁盘读写等的瓶颈,为服务器硬件瓶颈。
2、应用软件上的性能瓶颈:
一般指的是服务器操作系统瓶颈(参数配置)、数据库瓶颈(参数配置)、web服务器瓶颈(参数配置)、中间件瓶颈(参数配置)等
3、应用程序上的性能瓶颈:
一般指的是开发人员,开发出来的应用程序(如sql语句、数据库设计、业务逻辑、算法等)。
4、操作系统上的性能瓶颈:
一般指的是Windows、linux等操作系统,如出现物理内存不足时,或虚拟内存设置不合理(虚拟内存设置不合理,会导致虚拟内存的交换率大大降低,从而导致行为的响应时间大大增加,可以认为在操作系统上出现了性能瓶颈)。
5、网络设备上的性能瓶颈:
一般指的是防火墙、动态负载均衡器、交换机等设备。
性能瓶颈原因定位十分复杂,需抽丝剥茧逐一排除,以上信息仅供参考。