架构师训练营 - 总结 7
一. 性能测试
1.1 性能测试意义
性能测试是性能优化的前提和基础,也时性能优化结果的检查和度量标准。
1.2 性能测试指标
网站性能测试的主要指标有并发数,响应时间, 吞吐量,性能计数器等。
<1> 并发数
指系统能够同时处理请求的数目。对于网站而言,并发数即网站并发用户数,指同时提交请求的用户数目。与网站并发用户数对应的还有网站在线用户数(当前登录网站的用户总数)和网站系统用户数(可能访问网站系统的总用户数)。三者之间的数量关系为: 网站系统用户数 >> 网站在线用户数 >> 网站并发用户数。
测试计算方法:
测试程序通过多线程模拟并发用户的办法来测试系统的并发处理能力。常见的压测工具如:Jmeter, Apache Bench, 通过输入网站的 URL 以及一些配置参数(模拟的用户数,模拟的请求数)来模拟多用户访问。
<2>响应时间
指应用执行一个操作所需的时间,包括从发出请求开始到最后收到响应所需要的时间。响应时间是系统最重要的性能指标,直观的反映了系统的快慢。
测试计算方法:
可以通过编写测试程序模拟应用程序,记录发出请求和收到响应之间的时间差来计算系统响应时间。如果测试目标操作本身需要花费的时间较少,比如几微秒,那么测试程序就无法测试得到系统的响应时间。解决办法就是重复请求,比如一个请求请求一万次,测试一万次请求所需要的总响应时间之和,然后除以一万,就可以求出单次请求的响应时间。
<3>响应时间
指单位时间内系统处理的请求数,体现系统的整体处理能力。对于网站,可以用 “请求数/秒” 来衡量。TPS(每秒事务数)是吞吐量的一个常用量化指标,此外还有HPS(每秒HTTP请求数)、QPS(每秒查询数)等。
测试计算方法:
通过计算TPS(每秒事务数),QPS(每秒查询数)来反映。
<4>性能计数器
是描述服务器和操作系统性能的数据指标。包括System Load,创建对象与线程数,CPU与内存状态,磁盘与网络IO状态,
测试计算方法:
可通过系统内置命令和监控工具,以及运维监控软件如Zabbix来实时监控指标数据。
1.3 性能测试阶段
<1>性能测试
通过对系统不断增加压力,验证系统在资源可接受范围内,可否达到性能预期
<2>负载测试
通过继续对系统增加压力,找到系统的性能的安全临界值。
<3>压力测试
越过系统性能的安全临界值,继续不断增加压力,直到系统崩溃,获得系统最大承受能力
<4>稳定性测试
在给定系统硬软件资源的条件下,给系统一定的压力,使系统运行较长时间,来检测系统是否可以稳定运行。
二. 性能优化
2.1 性能优化的原则
<1> 你不能优化一个没有测试的软件
<2> 你不能优化一个你不了解的软件
2.2 性能优化的一般方法
<1> 性能测试,获取性能目标
<2> 指标分析,发现性能与资源瓶颈点
<3> 架构与代码分析,寻找性能与资源瓶颈关键所在
<4> 架构与代码优化, 优化关键技术点,平衡资源利用
<5> 性能测试,进入性能优化闭环
2.3 系统性能优化的分层思想
<1> 机房与骨干网络性能优化
<2> 服务器与硬件性能优化
<3> 操作系统性能优化
<4> 虚拟机性能优化
<5> 基础组件性能优化
<6> 软件架构性能优化
<7> 软件代码性能优化
评论