稳定性测试调研

 

1.网易易测:稳定性测试实践篇 

稳定性测试的设计思想,主要包含以下6个方面:

时间:是否需要不间断连续运行?长时间运行是否会有数据累积或者资源泄露?

大流量:哪些模块、数据和流量有关?极限流量下系统还能正常吗?

大并发:正常逻辑业务的大并发以及操作冲突任务的并发下是否都能正常?

环境:系统运行的环境如何?负载高、网络延迟、抖动等是否会影响系统正常工作?

使用方式:用户真正的配置及使用模式和测试是否类似?

极端情况:宕机、服务被kill等系统是否高可用?

下面根据以上稳定性测试设计的6个思想,针对网易云iaas服务中nvs的稳定性测试谈谈稳定性测试的实践。

(备注1:网易云iaas服务,基于openstack架构,参考下图,nvs服务为其中云主机部分)

(备注2:部分测试设计及结果的数据仅为阐明问题,非实际数据)

1

测试设计思想

  • 测试对象:物理机+VM(固定+变化)

  • 测试周期:无故障运行的时间

  • 测试规模:物理机规模+虚拟机规模

  • 业务场景:业务类型+调用频率+调度策略

  • 负载模型:负载类型+负载梯度

  • 调用方式:单用户多并发+多用户并发

  • 告警推送:邮件推送+短信提醒

测试对象:物理机+VM(固定+变化)

测试周期:无故障运行的时间

测试规模:物理机规模+虚拟机规模

业务场景:业务类型+调用频率+调度策略

负载模型:负载类型+负载梯度

调用方式:单用户多并发+多用户并发

告警推送:邮件推送+短信提醒

2

测试整体框架

3

稳定性实现方式

预定场景测试:包括固定场景和动态变化场景两个部分。

固定场景设计,默认使用10个租户,每个租户选择5个vm进行固定场景测试。固定场景如下图所示:

随机调度测试:模拟线上的真实客户应用,具体调用哪些业务无法预知,主要验证在此情况下系统是否会出现异常。举例如下:

环境中有10个tenant,,每个tenant下面有50-100台虚拟机不等。

随机选择一个tenant,然后在此tenant下面随机选择一台云主机,在预设的操作库(包含云主机常规操作等)中随机选择一种业务操作,如migrate进行操作,操作后进行对应的结果分析和告警等。

负载策略:考虑使用负载加压工具对CPU、内存、网络IO、磁盘IO在同时或者分时加压前提下对非互斥任务进行最大化运行。

其他策略:

  • 业务规模:根据宿主机的实际能力确定业务规模的大小。

  • 调用频率及优先级:对业务进行优先级划分,调用频率较高的业务增加优先级设置,随机调度的时候出场率增加,我们把网络初始化、云主机生命周期、云硬盘挂卸载等操作作为最常规的操作。

  • 多次调度均未调度的业务,适当增加提升优先级,增加触发几率。

  • 并发策略方面,通过两种方式实现,不同tenant的并发以及业务的连续无等待串行实现(异步场景)。

  • 极端异常(宕机、断网等)随机注入。

业务规模:根据宿主机的实际能力确定业务规模的大小。

调用频率及优先级:对业务进行优先级划分,调用频率较高的业务增加优先级设置,随机调度的时候出场率增加,我们把网络初始化、云主机生命周期、云硬盘挂卸载等操作作为最常规的操作。

多次调度均未调度的业务,适当增加提升优先级,增加触发几率。

并发策略方面,通过两种方式实现,不同tenant的并发以及业务的连续无等待串行实现(异步场景)。

极端异常(宕机、断网等)随机注入。

4

稳定性测试结果

我们会在重大更新上线前或者按迭代进行稳定性测试。每次测试周期均为7*24小时,测试过程中发现了不少内核crash等导致系统崩溃的问题,避免了线上出现事故。网易的云服务在公有云能够支撑不同类型的客户;在私有云保障网易各个互联网产品(考拉、云音乐等)的稳定运行,其中稳定性测试发挥了重大作用。

本次着重以网易iaas服务中云主机服务的稳定性测试为例,与大家交流一下稳定性测试的实践,稳定性测试目前已经累计运行数十次,整个稳定性测试已经完成平台化的开发,后续会为大家带来稳定性测试平台的相关介绍。

2.极客时间-服务端稳定性测试

服务端稳定性:系统要素在各类外界因素的影响下,表现出的稳定状态

长连接集群混部+流量徒增引发的问题case:IM消息和直播聊天室这两个长连接部署的同一套集群,活动直播+长连接消息阻塞,kafka

延迟,

要素:1.系统要素:服务正常运行,响应时间可以接受,资源占用合理2.外界影响:第三方依赖,大量集中的用户行为,基础设施依赖3.稳定状态:服务长时间运行,变更期平稳,异常情况可以快速回复

稳定性测试:服务本身的逻辑争取,大量用户长时间使用后的稳定

1.模块重构(技术重构):流量回放

2.日志改造引发的逻辑bug,核心业务,调用量top5接口测试脚本,性能测试例行化

3.流量徒增:容量评估

4.极端情况:线下模拟:服务被杀模拟,网络异常,

5.故障模拟和演练:降级,削峰,限流(构造压力),熔断(构造API异常),故障摘除(自动或手动摘流量)

6.监控

3.关于软件稳定性测试的思考与实践