论坛首页 Java企业应用论坛

java memcached lib 性能测试

浏览 4654 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-09-17  

这两天有时间,研究了一下最近火的发烫的 memcached.

java 有两个类库,Api 都很简单。

看了看介绍,先试用了 http://bleu.west.spy.net/~dustin/projects/memcached/

但是测试之下发现客户端的 CPU 占用接近 100%,而服务器端 cpu 基本上是 0 。对于比较复杂的对象每秒只能完成 1400 个左右的 get.

看来 memcached 的确是很棒的产品。但是客户端会是很大的瓶颈。

于是开始测试另外一个库,http://www.whalin.com/memcached/

结果测试结果更加令人失望,速度只是第一个的 60-70%。

难道是所有的客户端都会这么慢?所以我试了一下 perl 的库,发现 perl 的库速度很令人满意。所以应该是 java 的客户端库的问题。

但是这么很好很强大的的 memcached  又不能不用,所以打算改进一下 java 库。

开始的时候打算改进 spy 库,但是他有一个 spy.jar 不是开放源码的。而且他的对应的代码写的太复杂了,有一些过度设计了。这很不符合我追求的简单原则。

简单看了下 whalin 的源代码,发现有许多方面可以改进。于是花了点时间改进了几个比较严重影响性能的地方。经过测试,性能居然超过了 spy 包。

不错,应该可以在产品环境使用了,由于时间有限,暂时不进行更多的改进工作了。等到它成为性能瓶颈的时候再进一步的进行优化吧。估计应该有 20-150% 的优化空间。

BTW:网上有人说 Hessian 的串行化性能比 Java 的好,经过测试,发现 Serialize Java is 3 times faster. deserialize Hessian is 10% faster. Wired.

   发表时间:2008-09-17  
楼上,能否把你的成果整理一下共享给大家?或者捐献给whalin开发团队?
0 请登录后投票
   发表时间:2008-09-17  
movingboy 写道
楼上,能否把你的成果整理一下共享给大家?或者捐献给whalin开发团队?

我已经发了封信给他了。
0 请登录后投票
   发表时间:2008-11-05   最后修改:2008-11-05
分享一下瓶颈所在,如何修改的。
0 请登录后投票
   发表时间:2008-11-05  
把测试代码贴出来,大家跟你一起来完善这个client
0 请登录后投票
   发表时间:2008-11-05  
最近在选型,今天抽空测试了一下: spymemcache, whalin 两个Client
key,value : 1-20000 转为字符, zhi执行次数相同。

spymemcache, sigle thread
write test:thread num=1, repeat=20000,avg time:0.313300 ms
read test: thread num=1, repeat=20000,avg time:0.528900 ms

whalin:  连接数:5-50
write test:thread num=1, repeat=20000,avg time:0.789850 ms
read test: thread num=1, repeat=20000,avg time:0.550750 ms

read操作性能差不多: spymemcache 是 whalin 的 1.05 倍
write操作 spy明显快很多: 大约是 2.52 倍。


cache一般在 read上发挥作用,因此 对于命中率高的应用,例如:查询系统,两者差别不大。
不过 OLTP系统,命中率一般都 < 90%, write操作频率考虑进去的话,用 spymemecache 更好一些。


不过楼主说改进方案使whalin更快,也希望分享他的经验。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics