• dubbo性能测试报告


    测试说明

    a、本次性能测试,测试了dubbo2.0所有支持的协议在不同大小和数据类型下的表现,并与dubbo1.0进行了对比。

    b、整体性能相比1.0有了提升,平均提升10%,使用dubbo2.0新增的dubbo序列化还能获得10%~50%的性能提升,详见下面的性能数据。

    c、稳定性测试中由于将底层通信框架从mina换成netty,old区对象的增长大大减少,50小时运行,增长不到200m,无fullgc。(可以确认为mina在高并发下的设计缺陷)

    d、存在的问题:在50k数据的时候2.0性能不如1.0,怀疑可能是缓冲区设置的问题,下版本会进一步确认。

    测试环境

    2.1硬件部署与参数调整

    主机/ip
    硬件配置
    操作系统及参数调整

    10.20.153.11

    机型

    TecalBH620

    CPU

    modelname :Intel®Xeon®CPUE5520@2.27GHz cachesize :8192KB processor_count:16

    内存

    TotalSystemMemory:6G HardwareMemoryInfo: Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown

    网络

    TotalSystemMemory:6G HardwareMemoryInfo: Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown

    磁盘

    /dev/sda:597.9GB,

    2.6.18-128.el5xenx86_64

    10.20.153.10

    机型

    TecalBH620

    CPU

    modelname :Intel®Xeon®CPUE5520@2.27GHz cachesize :8192KB processor_count:16

    内存

    TotalSystemMemory:6G HardwareMemoryInfo: Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown Size:4096MB,1066MHz(0.9ns) Size:NoModule,Unknown

    网络

    eth0:Linkisupat1000Mbps,fullduplex.peth0:Linkisupat1000Mbps,fullduplex.

    磁盘

    /dev/sda:597.9GB,

    2.6.18-128.el5xenx86_64

    2.2软件架构

    主机/ip
    软件名称及版本
    关键参数

    javaversion"1.6.0_18" Java™SERuntimeEnvironment(build1.6.0_18-b07) JavaHotSpot™64-BitServerVM(build16.0-b13,mixedmode)

    -server-Xmx2g-Xms2g-Xmn256m-XX:PermSize=128m-Xss256k-XX:+DisableExplicitGC-XX:+UseConcMarkSweepGC-XX:+CMSParallelRemarkEnabled-XX:+UseCMSCompactAtFullCollection-XX:LargePageSizeInBytes=128m-XX:+UseFastAccessorMethods-XX:+UseCMSInitiatingOccupancyOnly-XX:CMSInitiatingOccupancyFraction=70

    jboss-4.0.5.GA

    httpd-2.0.61

    KeepAliveOn MaxKeepAliveRequests100000 KeepAliveTimeout180 MaxRequestsPerChild1000000 StartServers5 MaxClients1024 MinSpareThreads25 MaxSpareThreads75 ThreadsPerChild64 ThreadLimit128 ServerLimit16

    测试目的

    3.1期望性能指标(量化)

    场景名称
    对应指标名称
    期望值范围
    实际值
    是否满足期望(是/否)

    1k数据

    响应时间

    0.9ms

    0.79ms

    1k数据

    TPS

    10000

    11994

    3.2期望运行状况(非量化,可选)

    2.0性能不低于1.0,2.0和1.0互调用的性能无明显下降。 除了50k string其余皆通过
    JVM内存运行稳定,无OOM,堆内存中无不合理的大对象的占用。通过
    CPU、内存、网络、磁盘、文件句柄占用平稳。通过
    无频繁线程锁,线程数平稳。通过
    业务线程负载均衡。通过

    测试脚本

    1、性能测试场景(10并发)

    a、传入1kString,不做任何处理,原样返回

    b、传入50kString,不做任何处理,原样返回

    c、传入200kString,不做任何处理,原样返回

    d、传入1k pojo(嵌套的复杂person对象),不做任何处理,原样返回

    上述场景在dubbo1.0dubbo2.0(hessian2序列化)dubbo2.0(dubbo序列化) mihessian3.2.0http(json序列化)进行10分钟的性能测试。 主要考察序列化和网络IO的性能,因此服务端无任何业务逻辑。取10并发是考虑到http协议在高并发下对CPU的使用率较高可能会先打到瓶颈。

    2、并发场景(20并发)

    传入1kString,在服务器段循环1w次,每次重新生成一个随机数然后进行拼装。

    考察业务线程是否能够分配到每个CPU上。

    3、稳定性场景(20并发)

    同时调用1个参数为String(5k)方法,1个参数为person对象的方法,1个参数为map(值为3个person)的方法,持续运行50小时。

    4、高压力场景(20并发)

    在稳定性场景的基础上,将提供者和消费者布置成均为2台(一台机器2个实例),且String的参数从20byte到200k,每隔10分钟随机变换。

    测试结果

    5.1场景名称:pojo场景

    TPS成功平均值

    响应时间成功平均值(ms)

    dubbo1
    (hessian2序列化+mina

    10813.5

    0.9

    dubbo2
    (hessian2序列化+netty)

    11994

    0.79

    dubbo2
    (dubbo序列化+netty)

    13620

    0.67

    rmi

    2461.79

    4

    hessian

    2417.7

    4.1

    http(json序列化)

    8179.08

    1.15

    2.0和1.0默认
    对比百分比

    10.92

    -12.22

    dubbo序列化相比hessian2序列化百分比

    13.56

    -15.19

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RvVUfBwn-1662421994394)(http://dubbo.io/pojotps.png-version=1&modificationDate=1317388356000.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pu2wRIXg-1662421994395)(http://dubbo.io/pojores.png-version=1&modificationDate=1317388349000.png)]

    5.2场景名称:1k string场景|

    TPS成功平均值

    响应时间成功平均值(ms)

    dubbo1
    (hessian2序列化+mina)

    11940

    0.8

    dubbo2
    (hessian2序列化+netty)

    14402

    0.64

    dubbo2
    (dubbo序列化+netty)

    15096

    0.6

    rmi

    11136.02

    0.81

    hessian

    11426.83

    0.79

    http(json序列化)

    8919.27

    1.04

    2.0和1.0默认
    对比百分比

    20.62

    -20.00

    dubbo序列化相比hessian2序列化百分比

    4.82

    -6.25

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qiQmCHva-1662421994395)(http://dubbo.io/1ktps.png-version=1&modificationDate=1317388345000.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-py6sNLfJ-1662421994396)(http://dubbo.io/1kres.png-version=1&modificationDate=1317388329000.png)]

    5.3场景名称:50k string场景|

    TPS成功平均值

    响应时间成功平均值(ms)

    dubbo1
    (hessian2序列化+mina)

    1962.7

    5.1

    dubbo2
    (hessian2序列化+netty)

    1293

    5.03

    dubbo2
    (dubbo序列化+netty)

    1966

    7.68

    rmi

    3349.88

    2.9

    hessian

    1925.33

    5.13

    http(json序列化)

    3247.1

    3

    2.0和1.0默认
    对比百分比

    -34.12

    -1.37

    dubbo序列化相比hessian2序列化百分比

    52.05

    52.68

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zze6cFNL-1662421994396)(http://dubbo.io/50ktps.png-version=1&modificationDate=1317388345000.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o3UgrZHi-1662421994397)(http://dubbo.io/50kres.png-version=1&modificationDate=1317388345000.png)]

    5.4场景名称:200k string场景|

    TPS成功平均值

    响应时间成功平均值(ms)

    dubbo1
    (hessian2序列化+mina)

    324.2

    30.8

    dubbo2
    (hessian2序列化+netty)

    362.92

    27.49

    dubbo2
    (dubbo序列化+netty)

    569.5

    17.51

    rmi

    1031.28

    9.61

    hessian

    628.06

    15.83

    http(json序列化)

    1011.97

    9.79

    2.0和1.0默认
    对比百分比

    11.94

    -10.75

    dubbo序列化相比hessian2序列化百分比

    56.92

    -36.30

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QznhbmtK-1662421994397)(http://dubbo.io/200ktps.png-version=1&modificationDate=1317388345000.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z8C5aw2q-1662421994398)(http://dubbo.io/200kres.png-version=1&modificationDate=1317388345000.png)]

    测试分析

    6.1性能分析评估

    Dubbo2.0的性能测试结论为通过,从性能、内存占用和稳定性上都有了提高和改进。由其是内存管理由于将mina换成netty,大大减少了1.0版本在高并发大数据下的内存大锯齿。如下图:

    6.2性能对比分析(新旧环境、不同数据量级等)

    Dubbo2.0相比较Dubbo1.0(默认使用的都是hessian2序列化)性能均有提升(除了50k String),详见第五章的性能数据。

    出于兼容性考虑默认的序列化方式和1.0保持一致使用hessian2,如对性能有更高要求可以使用dubbo序列化,由其是在处理复杂对象时,在大数据量下能获得50%的提升(但此时已不建议使用Dubbo协议)。

    Dubbo的设计目的是为了满足高并发小数据量的rpc调用,在大数据量下的性能表现并不好,建议使用rmi或http协议。

    6.3测试局限性分析(可选)

    本次性能测试考察的是dubbo本身的性能,实际使用过程中的性能有待应用来验证。

    由于dubbo本身的性能占用都在毫秒级,占的基数很小,性能提升可能对应用整体的性能变化不大。

    由于邮件篇幅所限没有列出所有的监控图,如需获得可在大力神平台上查询。

    测试覆盖率报告

    (+) (#)

    统计于 2012-02-03 (2.0.12)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xLqbBzHb-1662421994399)(http://dubbo.io/code-quality1.jpg-version=1&modificationDate=1328239751000.jpg)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MabPaZFu-1662421994399)(http://dubbo.io/code-quality2.jpg-version=1&modificationDate=1328239559000.jpg)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RULJTvd0-1662421994400)(http://dubbo.io/code-coverage.jpg-version=1&modificationDate=1328239005000.jpg)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oklQZGFR-1662421994400)(http://dubbo.io/code-tendency.jpg-version=1&modificationDate=1328239564000.jpg)]
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fevbNtrv-1662421994401)(http://dubbo.io/code-dependency.jpg-version=1&modificationDate=1328239550000.jpg)]

    Labels:

  • 相关阅读:
    AVS感知无损压缩标准概述——视觉无损质量等级视频浅压缩
    Dijkstra算法浅理解
    跨平台密码管理器KeePassX停止开发,你用过吗?
    测试员突破瓶颈指南,不看又废了一年
    结合RocketMQ 源码,带你了解并发编程的三大神器
    后端通过@jsonformat格式化数据转发,前端无法正确显示
    如何录制视频?有了这款视频录制软件,粉丝多了,转发量也起来了
    【Kubernetes | Pod 系列】Pod 的基本管理(4)——访问容器与故障排错
    git 过滤不需要提交的目录和文件
    MT1184矩形相交 题解【超详细】
  • 原文地址:https://blog.csdn.net/qq_46416934/article/details/126716894