zoukankan      html  css  js  c++  java
  • Memcached客户端性能评测报告

    转载:http://wenku.baidu.com/view/38a195c02cc58bd63186bdcb  ;

    Memcached客户端性能评测报告

    1.      Memcached客户端简介

    本次memcached客户端评测以JAVA开源客户项目为评测对象,分别选择Memcached-Java-Client、spymemcached、xmemcached、alisoft xplatform asf cache四个项目,其中分别由两个产品基于堵塞式IO和NOI实现的客户端、两个国内开源项目或两个国外开源项目。

    选择的客户端简介如下:

    Memcached-Java-Client

    Memcached-Java-Client是官方提供的基于传统阻塞io客户端。官方网址为http://www.whalin.com/memcached/

    alisoft xplatform asf cache

    alisoft xplatform asf cache是阿里开源的memcached集群的客户端,它是基于Memcached-Java-Client的衍生版本。配置简单,使用也简单,有很详细的中文文档。官方网址为http://code.google.com/p/memcache-client-forjava/

    spymemcached

    spymemcached是基于Java NOI、单线程、异步处理的高性能memcached客户端,spymemcached对数据的操作采用异步处理方式,对于相同的缓存数据查询操作可以自动进行归并,避免多次服务器请求。spymemcached官网网址为:http://code.google.com/p/spymemcached/

    xmemcached

    Xmemcached是基于Java NOI、线程安全、同步处理的高性能memcached客户端,支持memcached所有的二进制协议(从1.2.0开始)和文本协议,并且支持对Kestrel(一个scala写的MQ)的兼容访问。官方网址为http://code.google.com/p/xmemcached/,基本入门指南见http://code.google.com/p/xmemcached/wiki/User_Guide_zh

    2.      测试场景说明

    2.1.  测试环境说明

    测试机环境

    CPU:双核2.53G

    MEM:2G

    OS:Linux Ubuntu 11.10 3.0.0-16-generic

    Memcached

    Memcached版本为1.4.13。

    JDK

    JDK版本为1.7。

    客户端

    所有客户端均采用最新版本,具体版本如下:

    u Memcached-Java-Client 2.6.3

    u Spymemcached 2.8.0

    u Xmemcached 1.3.5

    u alisoft xplatform asf cache 2.5.1

    2.2.  测试用例

    Memcached在测试机启动两个服务端口11211和11212。客户端同时连接两个memcached服务。

    性能测试采用三种不同的测试用例。

    用例1:随机生成100个32位长度的字符串,使用UUID作为key值,分别进行数据写入、数据读取、数据删除操作。

    用例2:随机生成长度为50的HashMap对象(约4k数据量),使用UUID作为key值,分别进行数据写入、数据读取、数据删除操作。

    用例3:在100并发线程下,对数据进行新增、获取、删除操作,数据的字节数从64Byte依次累加到51200字节(500k),具体测试数据包括,64、128、256、512、1024、2048、5120、10240、20480、51200、102400、204800、512000。

    针对两个测试用例,使用nanobench进行压力测试,使用不同的线程数共进行1000次请求(针对Memcached-Java-Client客户端在实际测试过程中,如使用1000次请求,系统出现too many open files错误,最后降低为500次请求)。

    3.      测试结果分析

    3.1.  写入性能分析

    数据写入性能分析情况如下:

     

    简单对象写入TPS分析

     

    复杂对象写入TPS分析

     

    简单对象写入内存占用分析

     

    复杂对象写入内存占用分析

           在较高并发情况下,xmemcached性能优于Spymemcached,在低并发情况下,Spymemcached略优于xmemcached。

    在数据写入方面,总体性能排名如下:xmemcachedàspymemcachedà alisoft xplatform asf cacheàMemcached-Java-Client;内存占用方面:xmemcachedàMemcached-Java-Client à alisoft xplatform asf cacheàspymemcached。

    3.2.  读取性能分析

    数据读取性能分析情况如下:

     

    简单对象读取TPS分析

     

    复杂对象读取TPS分析

     

    简单对象读取内存占用分析

     

    复杂对象读取内存占用分析

    在数据读取方面,总体性能排名如下:xmemcachedàspymemcachedàMemcached-Java-Client à alisoft xplatform asf cache;在内存占用方面: xmemcachedàspymemcachedà Memcached-Java-Client à alisoft xplatform asf cache。

    3.3.  删除性能分析

    数据输出性能分析情况如下:

     

    简单对象删除TPS分析

     

    复杂对象删除TPS分析

     

    简单对象删除内存占用分析

     

    复杂对象删除内存占用分析

    在数据删除方面,总体性能排名如下:spymemcachedàxmemcachedà alisoft xplatform asf cache à Memcached-Java-Client;在内存占用方面: xmemcachedàspymemcachedà Memcached-Java-Client à alisoft xplatform asf cache。

    备注:从数据上来看在较低线程数的情况下,spymemcached性能明显优于xmemcached,在高负载的情况下,spymemcached性能略优于xmemcached,但spymemcached由于采用异步调用模式(即删除指令发出后,数据并没有被真正删除,后台采用异步提交的方式进行处理),实际数据删除操作并没有处理完成。

    3.4.  数据长度变化性能分析

    在测试过程中,考虑alisoft xplatform asf cache、Memcached-Java-Client表现性能差强人意,不在对数据长度变化进行测试。调整测试内容为:spymemcached、xmemcached分别在二进制和ASCII协议下的性能变化情况。

     

    数据长度变化TPS影响分析

     

    数据长度变化内存占用影响分析

           实际测试结果显示,Xmemcached在整体性能上略占优势。在传输协议的对比结果上有些出乎意料,二进制协议并没有表现出优势,在大多数情况下,ASCII协议具备更好的性能。

    对于缓存的数据内容上,数据的长度在10k以内具备较好的性能,对于超过50k的数据,不建议在memcached中进行存储。(结合DB2的4k、8k、16k、32k表空间,如不处理lob字段,数据均在可承受范围之内)

    3.5.  总体评价

    依据上述测试结果,基于堵塞式IO的memcached客户端alisoft xplatform asf cache和Memcached-Java-Client 在性能上与基于NIO的客户端xmemcached、spymemcached存在较大的差距,基于堵塞式IO的memcached客户端在测试过程中均不定期出现“打开文件数过多”的错误,需要占用更多网络读写资源。

    xmemcached除在删除方面性能与spymemcached有一定的差距外,在数据写入、数据读取方面两者没有明显的差距。但在内存控制上,xmemcached具备较明显的优势(在测试过程中,spymemcached在对复杂对象操作过程中出现OOM的错误,有调整JVM的PermSize和内存进行解决);xmemcached本身是基于spymemcached改进而来,几乎具备spymemcached的功能。因此建议在系统应用中选用xmemcached作为memcached客户端。

    4.      附录

    4.1.  详细测试数据

    简单对象压力测试结果

    操作

    线程数

    SpyMemcached

    Xmemcached

    jmc

    asf

    TPS

    MEM

    TPS

    MEM

    TPS

    MEM

    TPS

    MEM

    写(set)

    10

    510.51

    88102

    310.97

    5258

    120.25

    59633

    136.08

    6020

    20

    478.6

    81439

    344.12

    4917

    106.97

    53436

    121.61

    13328

    50

    540.68

    114517

    388.45

    9360

    101.16

    51011

    116.76

    3139

    100

    462.62

    82393

    458.75

    17255

    99.87

    55550

    100.87

    11762

    200

    631.51

    102839

    590.35

    11751

    89.42

    18940

    97.19

    91386

    300

    519.25

    81165

    637.52

    13310

    93.65

    105222

    135.91

    78627

    400

    541.38

    65699

    724.8

    25330

    95.48

    91411

    115.31

    242422

    500

    619.05

    148441

    948.45

    26502

    94.37

    46319

    96.63

    45344

    读(get)

    10

    210

    21539

    364.7

    6724

    242.15

    131399

    141.4

    15082

    20

    256.77

    74909

    453.64

    3483

    190.03

    132258

    137.42

    7285

    50

    360.22

    45428

    522.57

    8901

    139.78

    29540

    142.23

    12445

    100

    489.43

    76244

    540.31

    21706

    115.72

    17710

    149.68

    16728

    200

    600.58

    47630

    686.78

    8022

    135.21

    89817

    129.89

    44619

    300

    748.08

    63623

    916.77

    11510

    154.5

    119221

    136.83

    47124

    400

    1068.16

    51982

    1081.32

    55875

    182.78

    130141

    105.33

    148399

    500

    1252.92

    67872

    1210.39

    55683

    211.66

    113543

    94.25

    156141

    删除(delete)

    10

    1920

    60949

    452.55

    3302

    257.21

    44434

    327.27

    5213

    20

    2014.29

    64557

    512.64

    6456

    226.46

    42114

    287.08

    8106

    50

    1532.33

    79291

    604.34

    9010

    231.84

    49590

    280.05

    3536

    100

    1784

    126154

    618.21

    7675

    201.95

    39735

    229.65

    38890

    200

    1557.98

    50025

    781.64

    82647

    242.11

    35557

    234.2

    122619

    300

    1675.35

    125495

    835.51

    7265

    325.72

    59770

    262.08

    100943

    400

    1202.99

    36298

    899.95

    23311

    256.35

    66451

    241.43

    191719

    500

    1261.06

    56263

    1075.2

    23440

    161.15

    63833

    146.83

    197955

    大对象压力测试结果

    操作

    线程数

    SpyMemcached

    Xmemcached

    jmc

    asf

    TPS

    MEM

    TPS

    MEM

    TPS

    MEM

    TPS

    MEM

    写(set)

    10

    259.24

    467583

    222.18

    255304

    144.48

    20764

    162.02

    246856

    20

    235.75

    497143

    235.54

    15381

    133.58

    85895

    154.8

    26305

    50

    237.82

    482584

    276.87

    91160

    142.85

    74635

    140.88

    257407

    100

    232.69

    442517

    291.82

    103691

    118.41

    15813

    137.34

    77771

    200

    232.1

    391364

    335.66

    17936

    132.09

    79607

    152.05

    243591

    300

    250.66

    392310

    404.91

    63163

    141.37

    79068

    152.17

    174972

    400

    259.27

    342082

    486.08

    96368

    120.97

    97293

    143.89

    189039

    500

    246.1

    273606

    449.88

    155568

    131.08

    78614

    150.08

    25611

    读(get)

    10

    178.64

    174495

    224.47

    249417

    171.26

    32600

    160.03

    246387

    20

    183.59

    140674

    245.79

    167597

    161.99

    160280

    138.22

    253770

    50

    226.32

    12239

    256

    87253

    152.9

    145711

    80.36

    255730

    100

    261.46

    82222

    300.66

    43833

    157.5

    159957

    69.26

    75928

    200

    346.15

    105795

    307.76

    52438

    164.14

    147615

    147.08

    91865

    300

    349.61

    53670

    383.89

    80387

    182.28

    147911

    124.45

    93083

    400

    430.09

    28327

    496.69

    77513

    177.31

    145364

    148.15

    127157

    500

    572.84

    53478

    487.23

    94533

    180.33

    148534

    151.33

    145180

    删除(delete)

    10

    3174.86

    64150

    827.66

    47583

    506.36

    98913

    663.43

    223488

    20

    3004.99

    66000

    923.66

    60185

    470.39

    115510

    667.98

    228045

    50

    4450.18

    63606

    950.02

    54976

    345

    104234

    542.52

    230123

    100

    3904.91

    60183

    862.95

    67825

    426.18

    110897

    498.82

    247312

    200

    3175.47

    65761

    1094.5

    63657

    374.3

    112631

    531.68

    238339

    300

    2046.76

    71115

    1289.17

    59543

    500.16

    92836

    526.47

    242203

    400

    1897.26

    75532

    1399.28

    50389

    418.81

    107433

    519.47

    243653

    500

    2071.35

    67690

    1159.58

    48333

    497.9

    149904

    513.8

    243406

    字节数变化压力测试结果

    字节数

    SpyMemcached-bin

    SpyMemcached-txt

    Xmemcached-bin

    Xmemcached-txt

    TPS

    MEM

    TPS

    MEM

    TPS

    MEM

    TPS

    MEM

    64

    2917.58

    5108

    2810.18

    13032

    3262.03

    8945

    4199.25

    9171

    128

    4292.9

    12312

    2895.1

    14109

    4531.3

    10094

    4133.94

    10406

    256

    3592.17

    14588

    3196.91

    16812

    3038.37

    11091

    6550.86

    11841

    512

    3233.89

    5017

    4160.2

    21820

    7860.32

    13821

    7131.74

    14266

    1024

    7361.02

    30589

    2470.53

    8164

    5109.72

    17938

    5703.03

    3614

    2048

    3233.6

    46527

    7798.11

    51387

    7222.36

    29494

    8547.69

    28575

    5120

    3358.58

    43874

    5514.08

    108159

    5406.71

    26134

    6850.01

    57482

    10240

    4440.62

    84220

    4117.94

    23733

    4584.6

    37675

    5092.56

    110802

    20480

    660.46

    151707

    778.49

    139424

    755.55

    17418

    850.55

    136711

    51200

    274.85

    136410

    271.22

    118354

    289.41

    113544

    285.84

    112371

    102400

    118.4

    80257

    123.24

    123402

    138.35

    96368

    139.74

    155225

    204800

    57.59

    168415

    58.11

    125883

    64.68

    140794

    64.86

    164982

    512000

    20.91

    323064

    21.76

    378767

    24

    226116

    24.78

    113326

    TPS:每秒通过率

    MEM:内存占用情况(单位K)

    jmcMemcached-Java-Client

    asfalisoft xplatform asf cache

    4.2.  第三方评测结果

    n  Memcached-Java-Client官方评测报告

    https://github.com/gwhalin/Memcached-Java-Client/wiki/PERFORMANCE

    n  XMemcached官方评测报告

    http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html

     

  • 相关阅读:
    iOSIPV6简单测试环境搭建
    SQL存儲過程的調試方法
    Excel的 OleDb 连接串的格式
    RequiredFieldValidator的使用
    GridView導出Excel
    咳嗽對症下藥
    WCF基礎
    WCF配置文件全攻略
    WCF寄宿方式
    WCF綁定
  • 原文地址:https://www.cnblogs.com/georgewangii/p/4525323.html
Copyright © 2011-2022 走看看