update:紧急修复一个严重的bug,影响多节点memcached下的余数哈希分布。jmx监控正式启用。更多单元测试。
XMemcached是一个基于java nio的memcached客户端。最新发布1.10-RC1版本,这个版本其实早就完成,一直没有环境来测试,本机测试没有多大价值。今天做了一个初步测试,在效率上已经超越了spymemcached最新的2.3.1版本,具体的测试数据请看下面,下载地址
这里,更新了
wiki。
1.10-RC1的主要改进:
1、
性能优化,具体请参见wiki,在测试中已经超越了spymemcached最新的2.3.1版本
2、
重构,引入Optimiezer、XMemcachedClientBuilder等类,并引入泛型方法,使API接口更趋实用性和便捷性。1.10rc1将不兼容1.0版本,具体API请参见javadoc。可以保证的是在1.10稳定后,xmemcached在API接口不会再有大的变动。
3、
引入maven做项目构建,原来的ant构建仍然可用。
4、
bug修复,具体参见issues报告,更多测试提高健壮性。
5、
引入jmx监控,可以通过java -Dxmemcached.jmx.enable=true来启用jmx监控,jmx功能可以统计xmemcached的各种操作次数,以及优化参数调整等,更多信息请参考javadoc和wiki
后续计划:
1.10版本的正式发布
1.11版本的开发工作,引入JMX监控。
今天给出的是memcached存储java原生类型的效率测试,key和value都是字符串,memcached单节点跑在局域网内的服务器上,spymemcached使用的是2.3.1版本,xmemcached使用的是1.10-RC1,两者都是默认配置。具体图表请看下面及相应说明。
首先是在我本机windows xp环境(因为主要看对比,机器环境不再具体说明),连接memcached服务器所做的测试,下面是xmemcached和spymemcached的set操作效率对比,纵坐标为TPS,横坐标为线程并发数(下同)。
显然,两者的set操作效率在windows下极为接近。接下来是get操作的对比直方图:
XMemcached在get操作上保持传统优势,并发越大,优势越明显。在测试了windows下两个客户端的表现,继续做linux下的测试数据,因为所用的机器是一台8核的牛机,因此TPS非常惊人。首先是set操作的对比:
不用多说,xmemcached全面占优。再看get操作的对比:
一个奇特的现象是在200线程并发的时候,spymemcached反而超过了xmemcached,这一现象反复测试还是如此。其他并发下,xmemcached全面占优,在达到500并发时,spymemcached的get很多超时,因此数据作废,而xmemcached由于可以设置get的操作的超时时间更长,因此仍然正常运行。
从以上测试可以看出,1.10-RC1版本的XMemcached存储原生类型已经在windows和linux平台上的效率都超过了spymemcached。对于自定义对象和容器对象的存储测试也证明xmemcached的效率已经全面超越了spymemcached。很希望有更多的测试报告,毕竟我的测试可能还是不够客观。