性能测试五:测试环境
测试环境及风险
一、测试环境分类
UT(Unit Testing 单元测试)
二、测试环境规范
测试环境调研
- 测试环境架构与生产环境架构完全相同。
- 测试环境机型与生产环境机型尽量相同,云化的资源确保是同规格ECS或者容器。
- 测试环境软件版本与生产环境软件版本完全相同,版本主要包括:操作系统、中间件相关、数据库、应用等。
- 测试环境参数配置与生产环境完全相同,参数主要包括:操作系统参数、中间件参数、数据库参数、应用参数。
- 测试环境基础数据量与生产环境基础数据量需在同一个数量级上。
- 只能减少测试环境机器台数,并且需要同比例缩小,而不能只减少某一层的机器台数。理想的测试环境配置是生产环境的1/2,1/4。
三、测试数据
测试数据分类:
- 基础数据/存款数据:需要保持跟生产上相同级别的数据量,或测试方案中规划的数据量(未来三年数据量增长趋势),同时关注数据分布问题。未来5年峰值(每年增加0.1) = 当前数据量 *(1+0.1)*(1+0.1)*(1+0.1)*(1+0.1)*(1+0.1)
- 测试数据:即消耗型数据
注意:
参数化数据量尽可能的多,必要的情况下,可以清除缓存或者用写代码的方式提供参数化。
参数化数据分布,如果业务有明显的地域等分布的特征,需要考虑数据分布的情况。
四、挡板
"挡板"(Mock)是一种模拟对象或功能的技术,用于替代实际的组件或服务。它通常用于测试和开发过程中,当某个组件或服务尚未准备就绪或不易访问时。其实现方法分为代码逻辑实现和挡板服务器实现。
挡板在性能测试中的作用:
部分接口涉及跨系统平台调用,当只测试本系统接口性能时,外联系统就需要挡板模拟返回数据。
挡板服务器(Mock Server)
服务器挡板是指在服务器端对请求进行限制和过滤的一种技术手段。其作用是保护服务器免受意外流量的冲击,防止恶意请求对系统造成破坏,以及提高服务器的稳定性和安全性。服务器挡板的原理主要包括以下几个方面:
- 流量控制:服务器挡板可以根据预设的流量阈值,对请求进行限制。当请求的流量超出设定的阈值时,服务器挡板会拒绝请求或者推迟处理,从而保护服务器免受过载的影响。流量控制可以避免服务器由于突发大量请求而崩溃,保证系统的可用性。
- IP过滤:服务器挡板可以根据IP地址对请求进行过滤。通过配置黑名单或白名单,可以禁止某些IP地址的请求访问服务器,或者只允许某些IP地址的请求访问。通过IP过滤,可以防止恶意攻击、网络爬虫等对服务器造成破坏和资源浪费。
- 请求验证:服务器挡板可以对请求进行验证,以确保请求的合法性和完整性。通过验证请求的参数、身份认证等信息,可以防止恶意请求、篡改请求等对服务器的攻击。请求验证可以提高服务器的安全性,减少非法请求所带来的风险。
- 缓存处理:服务器挡板可以将一些常用的请求结果缓存起来,当下次有相同请求时,直接返回缓存结果,而不需要真正去处理请求。这样可以减轻服务器的负载,并提高请求的处理速度。
- 异常处理:服务器挡板可以对异常请求进行处理,保证服务器的稳定性。当服务器出现异常时,服务器挡板可以拦截异常请求或者自动切换到备用服务器,保证系统的正常运行。
- 模拟服务器行为:服务器挡板可以模拟服务器的各种行为,包括返回指定的状态码、响应头、响应体等。开发者可以根据需要设置挡板的行为,例如返回成功的响应、错误的响应、超时等。通过模拟各种情况,可以在不依赖实际服务器的情况下进行各种测试,包括正常情况、异常情况、边界情况等。
五、压力机
或发压机,即模拟请求流量的客户端或服务器。
为避免压力机性能影响整个性能测试,应做如下检查:
CPU核数:当cpu被其他的程序所占用的时候,进程中的线程无法获取足够的cpu内存等支持,也是会阻塞排队,影响测试结果的,最好cpu的占用率维持到80%以下,确保压力机本身请求发起是有效的且无丢失的。还要确认程序是否发起了足够的线程。
内存大小:内存保证使用率≤80%;假如压力机为4c8g,可用内存为3.5g左右,启动一个线程需要1M(一个http请求),1000个线程大概需要1G,假如JVM设置Xms512m,Xmx1024m,1000VU,会导致Out of Memory。
网络:保证压力机与被测系统在同一局域网; 次选各个组件网卡带宽相同避免某一个组件成为瓶颈
线程数:Jmeter单台压力机推荐最高线程数500
Linux压力机内核限制:
netstat -n| awk '/^tcp/{++s[$NF]} END {for (a in S)print a,s[a]}'
#循环计算当前统计连接数 理论linux单机连接数在1024 ~ 65000
#vim /etc/sysctl.conf
net.ipv4.tcp_max_tw_buckets = 8000 #系统所处理最大timewait_sockets数目:最高65535,压测机增加至16000可提性能
net.ipv4.tcp_tw_reuse = 1 #是否允许重新应用处于TIME-WAIT状态的Socket用于新得TCP连接:默认0
net.ipv4.tcp_tw_recycle = 1 #快速打开TIME-WAIT socket回收:默认0
net.ipv4.tcp_fin_timeout = 10 #对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认60
修改进程允许打开文件数
ulimit -n 1024
浙公网安备 33010602011771号