zoukankan      html  css  js  c++  java
  • 微信小程序性能测试之jmeter踩坑记录(三)

    接上篇:微信小程序性能测试之jmeter踩坑记录(二)

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------

    线性压力测试

    线性测试主要测试集群性能是否随着服务器数量呈线性增长。此次测试采用go模拟的后台程序作为接受压力的B机,分别记录了在1台,2台,4台,8台,16台ecs服务器集群下系统的总并发数(CPU负载均为70%)。

    结果分析:

    下面分别是1,2,4,8,16台ecs的CPU负载图和并发数:

    • 1台ecs并发数为24000RPS左右,如下

    • 2台ecs并发数为48000RPS左右,如下

    • 4台ecs并发数为96000RPS左右,如下

    • 8台ecs并发数为192000RPS左右,如下

     

    • 16台ecs并发数为384000RPS左右,如下

    由上可知,集群并发数随着集群机器数量呈线性增长

    单机压力测试

    单机测试主要测试单机的并发量。发起压力的机器采用了1台跟压测中间件的A机同一规格(8核16G)的ecs,被压测的机器采用了1台同样配置的ecs。测试在单一节点下的php服务器能承受住的压力情况。为了模拟php接口需要的各种参数,这次采用了Jmeter发起压力请求。

    单机空压

    空压选用了业务逻辑最简单且不会操作数据库和Redis的授权接口CosAuth,以表示php服务器所能承受的最大并发请求数。下图是Jmeter的压力测试结果:

     

    可以看到此时显示的并发数平均为3000 RPS水平。下面再来看看此并发数下php单机服务器的各项硬件指标:

    由上图可知,在php单机并发数达到3000RPS的时候,服务器的CPU负载已经达到了90%左右,已接近极限水平了,故php单机的空压并发请求数为3000RPS左右

    单机其余接口压测

    1,php单机登录接口(login)在服务器CPU满负载(90%~100%)下的并发数如下图所示:

    可以看到php单机登录最大并发数平均为2200RPS左右。 

     2,php单机下单接口(addOrder)在服务器CPU满负载(90%~100%)下的并发数如下图所示:

    可以看到php单机下单最大并发数平均为500RPS左右

    3,php单机登录加下单混合(login+addOrder)在服务器CPU满负载(90%~100%)下的并发数如下图所示:

    可以看到php单机登录加下单混合最大并发数平均为2000RPS左右

    4,下图是php单机的登录下单混合业务场景在服务器CPU70%负载(即正常可接受范围内CPU的最大负荷)下的并发数:

    可以看到php单机的登录下单混合业务场景在服务器CPU70%负载的并发数约为1500RPS

    php单机压力测试结果分析

    由上文可看出,php单机的登录最大并发数为2200RPS左右,而目标登录并发数为500000RPS,故计算出至少需要500000/2200=227.27台8核的ecs服务器,共需要228*8=1824个ecs核心,才能满足需求。

    考虑到如此多的ecs成本颇高并且极有可能阿里库存不足,建议将登录接口采用go进行编写和处理,而其余业务采用php进行处理

    另一方面,从上文看出php单机的下单最大并发数为500RPS左右,下单目标并发数为15000RPS,故需要15000/500=30台8核的ecs,若要是服务器在正常符合范围内工作(CPU<=70%),则需要15000/(500*70%)=42.85台ecs即可达到下单的需求

    ---------------------------------------------------------------------------------------未完待续-------------------------------------------------------------------------------

  • 相关阅读:
    html基本标签练习
    实践1-qq邮箱主页
    html加强
    Date日期操作
    日期类的加减及java中所以日期类的操作算法大全
    讲解java异常
    关于Java并发编程的总结和思考
    删除map、list集合元素总结
    Jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】
    Java中的时间日期处理
  • 原文地址:https://www.cnblogs.com/qgc1995/p/14094231.html
Copyright © 2011-2022 走看看