Memcached客户端性能评测报告

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

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

时间: 2024-12-29 01:50:54

Memcached客户端性能评测报告的相关文章

(转)2016年第一期云评测报告

我们在说起云服务的时候,厂商传递给我们的信息总是非常简单:打消所有的顾虑,我们会帮你处理所有的事情. 但是云服务真的能让你省心吗? 也许可以,但是还有一个更严峻的问题:当你面对众多云服务厂商,不懂套路的你如何选择?牵涉指标太多,专业的云性能指标也不那么易懂,到底哪款适合你? 没有关系这都不再是问题,继2015年<中国公有云用户体验报告>后,听云又一重磅报告<2016第一期云评测报告>正式发布.此次报告是听云iDaaS中心利用自主研发的听云Network产品,从模拟真实用户的角度对不

使用memcached客户端Xmemcached与Spring整合

1 简介 Xmemcached是一个高性能的基于java nio的memcached客户端.在经过三个RC版本后,正式发布1.10-final版本. xmemcached特性一览: 1.高性能 2.支持完整的memcached文本协议,二进制协议将在1.2版本实现. 3.支持JMX,可以通过MBean调整性能参数.动态添加/移除server.查看统计等. 4.支持客户端统计 5.支持memcached节点的动态增减. 6.支持memcached分布:余数分布和一致性哈希分布. 7.更多的性能调整

分析Memcached客户端如何把缓存数据分布到多个服务器上

Memcached客户端可以设多个memcached服务器,它是如何把数据分发到各个服务器上,而使各个服务器负载平衡的呢? 可以看看.net版中的客户端中的源码,就可以知道 先看代码:   1 /// <summary>   2         /// Returns appropriate SockIO object given   3         /// string cache key and optional hashcode.   4         ///    5      

转:Linux性能评测工具之一:gprof篇

1 简介 改进应用程序的性能是一项非常耗时耗力的工作,但是究竟程序中是哪些函数消耗掉了大部分执行时间,这通常都不是非常明显的.GNU 编译器工具包所提供了一种剖析工具 GNU profiler(gprof).gprof 可以为 Linux平台上的程序精确分析性能瓶颈.gprof精确地给出函数被调用的时间和次数,给出函数调用关系. gprof 用户手册网站 http://sourceware.org/binutils/docs-2.17/gprof/index.html 2 功能 Gprof 是G

Android客户端性能参数监控

背景: 在做android客户端测试的时候,有时候需要监控cpu/mem/电量消耗/界面加载时间/流量等等指标.于是俺们就上下求索,网友告诉我两个方案:AnotherMonitor和Emmagee,在此之前,我自己写了一个工具,下文就这几个方案做一下比较和说明. AnotherMonitor和Emmagee都是apk的形式存在的,下面是官网: https://code.google.com/p/anothermonitor/ https://github.com/NetEase/Emmagee

&lt;转&gt;Android App性能评测分析-流畅度篇

1.前言 在手机App竞争越来越激烈的今天,Android App的各项性能特别是流畅度不如IOS,安卓基于java虚拟机运行,触控响应的延迟和卡顿比IOS系统严重得多.一些下拉上滑.双指缩放快速打字等操作,安卓的流畅度都表现比较糟糕,但是,对于App使用过程是否流畅,一直没有一个可靠的指标将用户的客观感受和数据一一对应.虽然之前有FPS(每秒帧数)作为游戏或视频类App的性能指标,但对于那些界面更新不多的App来说,仍不是一个合适的衡量数据.以下会根据实际app性能测试案例,展开进行app性能

( 转)从四分钟到两秒——谈谈客户端性能优化的一些最佳实践

转:http://www.cnblogs.com/marvin/p/WinformOptimizSkill.html 背景 最近跟售后经理吃饭,他跟我再次谈起两年前为公司临时写的一个客户端,仍然非常激动的跟我说,这个客户端完爆了公司其他版本的客户端,包括最老的Delphi写的,Asp.Net写的,以及最新的Wpf写的客户端.无论是多么大的界面(集成的机房多),这个系统都是瞬间打开,而且运行非常稳定,一旦成功部署之后基本没有任何问题. 这个版本的客户端仅仅只是一个临时替代的版本:原来的Delphi

Web 2.0应用客户端性能问题十大根源

原文 http://www.infoq.com/cn/news/2010/08/web-performance-root/ Web 2.0应用的推广为用户带来了全新的体验,同时也让开发人员更加关注客户端性能问题.最近,资深Web性能诊断专家.知名工具dynatrace的创始人之一Andreas Grabner根据自己的工作经验,总结了Web 2.0应用客户端性能问题十大根源,InfoQ中文站将这十个问题做了概括整理,供Web开发人员借鉴和思考. 1. IE中的CSS选择器(selector)运行

Android客户端性能优化(魅族资深工程师毫无保留奉献)

本文由魅族科技有限公司资深Android开发工程师degao(嵌入式企鹅圈原创团队成员)撰写,是degao在嵌入式企鹅圈发表的第一篇原创文章,毫无保留地总结分享其在领导魅族多个项目开发中的Android客户端性能优化经验,极具实践价值! 即日起,嵌入式企鹅圈将在之前五个专栏(Linux内核驱动情景分析.资源紧缺型SOC嵌入式架构设计.嵌入式交叉工具链及其应用.嵌入式设计和编程.微信硬件平台和物联网解决方案)新增Android开发专栏!更多Android.Linux.嵌入式和物联网原创技术分享敬请