趁周末,做了一个java memcached client的性能benchmark,比较了4个开源的client: spymemcachehd,xmemcached,java-MemCached和岑文初的asf-cached。这个测试可能不是那么准确,为了保证命中率,无法测试更多并发下的表现,以后再测试多个memcached server下的表现可能更有价值。详细的测试报告在这里 http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html,包括了测试场景、结果、软硬件情况说明等等。从测试分析产生的报表来看,在低并发下,基于传统的阻塞io的clients表现还可以,经过岑文初优化的版本超过了原始的java-MemCached。而在并发相对高一点的情况下,基于nio的spymemcached和xmemcached都超过了传统clients,不过这个差距随着value大小的增大而减小。另外,xmemcached在value比较小(小于1K左右)的性能高于spymemcached,而在更大value的情况下却是比不上spymemcached,不过这个差距随着并发增大而减小。更多信息请自己查看报告,checkout源码来分析。
xmemcached正式发布1.1.1,这个版本可以说是更强壮,更稳定的版本,也是支持二进制协议前的过渡版本。主要的改进如下:
1、yanf4j从0.60升级到0.61,因此使用的时候请替换这个jar包。
2、更多的单元测试,单元测试覆盖率达到63%,并覆盖了绝大多数关键代码。
3、进行了24小时压测,观察内存使用情况等,未发现有内存泄漏的隐患。
4、最重要的重构,将原来基于switch语句的协议解析部分修改为了更为OO的Command继承体系,尽管因为多态调用带来一点性能损失,然而整体结构更加合理,并易于添加新的协议支持和扩展(比如binary协议)。性能将会持续在后续版本进行改进。
5、修复BUG和添加新特性,并deprecated部分方法和类,具体信息参考Changelog
项目首页: http://code.google.com/p/xmemcached/
javadoc文档: http://xmemcached.googlecode.com/svn/trunk/apidocs/index.html
下载地址: http://code.google.com/p/xmemcached/downloads/list
wiki地址: http://code.google.com/p/xmemcached/w/list
svn地址: http://xmemcached.googlecode.com/svn/trunk/
文章转自庄周梦蝶 ,原文发布时间2009-06-07