关于性能测试(网络)

关于性能测试(网络)

性能测试如何做:

一般来说,性能测试要统一考虑这么几个因素:Thoughput吞吐量,Latency响应时间,资源利用(CPU/MEM/IO/Bandwidth…),成功率,系统稳定性。

下面的这些性能测试的方式基本上来源自汤森路透,一家做real-time的金融数据系统的公司。

一,你得定义一个系统的响应时间latency,建议是TP99,以及成功率。比如路透的定义:99.9%的响应时间必需在1ms之内,平均响应时间在1ms以内,100%的请求成功。

二,在这个响应时间的限制下,找到最高的吞吐量。测试用的数据,需要有大中小各种尺寸的数据,并可以混合。最好使用生产线上的测试数据。

三,在这个吞吐量做Soak Test,比如:使用第二步测试得到的吞吐量连续7天的不间断的压测系统。然后收集CPU,内存,硬盘/网络IO,等指标,查看系统是否稳定,比如,CPU是平稳的,内存使用也是平稳的。那么,这个值就是系统的性能

四,找到系统的极限值。比如:在成功率100%的情况下(不考虑响应时间的长短),系统能坚持10分钟的吞吐量。

五,做Burst Test。用第二步得到的吞吐量执行5分钟,然后在第四步得到的极限值执行1分钟,再回到第二步的吞吐量执行5钟,再到第四步的权限值执行1分钟,如此往复个一段时间,比如2天。收集系统数据:CPU、内存、硬盘/网络IO等,观察他们的曲线,以及相应的响应时间,确保系统是稳定的。

六、低吞吐量和网络小包的测试。有时候,在低吞吐量的时候,可能会导致latency上升,比如TCP_NODELAY的参数没有开启会导致latency上升(详见TCP的那些事),而网络小包会导致带宽用不满也会导致性能上不去,所以,性能测试还需要根据实际情况有选择的测试一下这两咱场景。

 

性能测试基本流程:

  1. 测试计划

 性能测试计划包括需要测试的业务范围的确定,指明所有需要被测试的点,比如用户查询、下订单。通常选用最常使用的功能或关键复杂业务功能,或新版本增加的新需求。

 性能测试计划包括测试环境的确定,是否与生产环境一致,如果不一致直接影响测试模型和指标。比如线上生产是集群环境而测试单节点,或服务器硬件配置有差别都需要在性能测试计划中体现。此外测试计划画出服务器网络拓扑图标记压力机和挡板的位置(如果用到挡板的话)。

 性能测试计划包括测试的方法,测试的场景、测试选用合适的工具。

 性能测试通过指标,下面给出通用的指标:

  1. 并发用户数(系统级/应用级/事务级)
  2. 事务吞吐率需求
  3. 响应时间需求(从用户习惯推算或估算)
  4. 系统资源占用需求
  5. 高可用性需求(如故障转移/OS集群/数据库集群/中间件集群)
  6. 可扩展性需求(如能否支撑未来几年的吞吐)

 最后性能测试计划也包括类似功能计划的人员安排职责以及存在的风险等。

  1. 测试场景

测试场景类型有性能测试、负载测试、压力测试、稳定性测试。

图1压力测试模型

(a点期望值、b点系统资源处于临界点、c点拐点、d点系统崩溃;Ax到Bx性能、b点负载、Bx到Dx压力)

      性能测试,是指以性能预期目标为前提,对系统不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期。运用场景:此类型的测试目前最常见。每个项目的性能点,都需要做性能测试。

      负载测试,狭义的负载测试,是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等。运用场景:此类型的测试目前运用得比较少。一般情况下,是以服务器资源安全临界值为界限的测试。如果要模拟某个应用在指定服务器上最大且安全的负载量,则属于负载测试。

      压力测试,是指超过安全负载的情况下,对系统不断施加压力,是通过确定一个系统的瓶颈或不能接收用户请求的性能点,来获得系统能提供的最大服务级别的测试。运用场景:此类型的测试目前运用得比较少。但对于大型的共享中心或者核心的应用也会用到。

      稳定性测试,是指被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定,一般稳定性测试时间为n*12小时。运用场景:此类型的测试目前也最常见,针对需要长时间稳定运行的性能点,需要执行稳定性测试。往往在一个项目的性能测试过程中,会划分出优先级较高的性能点,做稳定性测试。

  1. 脚本开发与调试

      目前常用的性能测试工具有Loadrunner和jmeter,功能都非常强大。脚本开发调试流程类似

  1. 选取协议,根据client-Server交互的协议选择,优先采用上层协议。如H5页面上层用http协议的下层协议是socket那么选用http协议;游戏客户端上层就是socket那么选用socket。
  2. 增强脚本,根据实际业务要求增强,如参数化用户数据、关联数据、增加检查点(检查断言)、添加合理的事物。保持脚本简洁、可重用。
  3. 调试运行脚本,打开lr扩展日志\jmeter的察看检查树,运行时验证脚本的正确性。

小编用lr比较多,推荐于涌老师的《软件性能测试与loadrunner实战》,7D group会在2017年上半年出一本jmeter性能测试与分析的书敬请期待。

  1. 测试执行监控

1、执行前准确环境环境,如关闭loadrunner的正常日志打印(jmeter的监听器),数据库的初始化,脚本参数化数据,服务器debug日志是否关闭,jvm的启动设置等

2、执行并监控,通常需要监控的指标包括:

     服务器吞吐量(比如在线用户数、每秒请求数、每秒事务数)

     事务响应时间(比如小于3秒)

     事务成功率(比如大于99.9%)

     服务器资源使用率(包括CPU、Memory、Load、I/O、网络)

     数据库:Mysql \Oracle(索引、单条SQL性能)

  1. 测试监控工具

下面统计了几种常用分析工具

1、LoadRunner analysis

analysis用于将运行过程中所采集到的数据生成报表,主要用于采集TPS、响应时间、服务器资源使用情况等变化趋势。常用的有概要报告、平均事务响应时间图,每秒事务数图

图2 每秒事务数图

2、nmon_analyser

liunx下nmon工具可以采集服务器的资源信息。列出CPU、MEM、网络、I/O等资源指标的使用情况。

3、性能监视器

windows下自带采集系统资源工具。可以监控各种资源的计数器,同样非常强大

图3 windows性能监视器

4、jvisualvm

jdk自带监控工具,监控java内存、java CPU使用率、线程执行情况等。

图4jvisualvm

5、JProfiler

全面监控每个节点的CPU使用率、内存使用率、响应时间累计值、线程执行情况等

6.测试结果分析

  采用自顶向下、外到内,逐步排除的方式,首先排除其它程序过度占用系统资源的问题,然后排除本身占用系统资源过度的问题,最后观察目标服务内部的情况,识别出哪些现象是正常的,哪些现象是异常的,排除掉各种常见故障类型。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值