`
jiming
  • 浏览: 274288 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java memcached lib 性能测试

    博客分类:
  • java
阅读更多

这两天有时间,研究了一下最近火的发烫的 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.

分享到:
评论
5 楼 raymond2006k 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更快,也希望分享他的经验。
4 楼 34982442 2008-11-05  
把测试代码贴出来,大家跟你一起来完善这个client
3 楼 raymond2006k 2008-11-05  
分享一下瓶颈所在,如何修改的。
2 楼 jiming 2008-09-17  
movingboy 写道
楼上,能否把你的成果整理一下共享给大家?或者捐献给whalin开发团队?

我已经发了封信给他了。
1 楼 movingboy 2008-09-17  
楼上,能否把你的成果整理一下共享给大家?或者捐献给whalin开发团队?

相关推荐

    java_memcached-release_1.6.zip

    2. 编译后的jar文件(如:lib/slabsj-1.6.jar),这是实际运行时需要引入到Java项目的类库,包含了所有必要的类和方法,用于与Memcached服务器通信。 3. 文档(docs目录),可能包括API文档、用户手册或开发者指南,...

    memcached java client

    10. **lib**: 这个目录可能包含了一些依赖库,这些库是Java Memcached客户端运行所必需的,可能包含其他的Java库或第三方依赖。 使用Java Memcached客户端的关键在于了解如何连接到Memcached服务器,创建客户端实例...

    memcached和activeMQ的JAVA示例代码

    1. **memcached** 是一个高性能的分布式内存对象缓存系统,用于减少数据库负载,提高应用程序的性能。它的设计目标是简化数据存储,提供快速、简便的数据存储解决方案。 2. **Java客户端**:在Java中,可以使用...

    memcached及tomcat相配的jar

    6. **测试和监控**:集成后,进行充分的测试以确保Memcached与Tomcat配合良好,没有性能问题或冲突。同时,对Memcached的性能进行监控,如使用率、命中率、错误率等,以便及时调整配置。 总之,通过将Memcached与...

    tomcate7+memcached所需jar包

    - 下载并添加Memcached客户端库的jar包到Tomcat的`lib`目录,这样服务器可以访问到这些类。 - 在Java应用中引入客户端库,初始化连接到Memcached服务器的实例,设置必要的配置,如服务器地址、端口、超时时间等。 ...

    tomcat-memcached所需jar包

    【标题解析】 "Tomcat-Memcached所需jar包"这个标题揭示了我们要讨论的核心内容。Tomcat是一款广泛使用的开源Java应用服务器,而...然后,通过编程接口存取缓存数据,进行性能测试和调优,以确保系统的稳定性和效率。

    Linux-memcached-tomcat8-session共享lib.rar

    这个名为“Linux-memcached-tomcat8-session共享lib.rar”的压缩包文件显然旨在解决一个特定的问题:在Linux系统上,通过Nginx作为负载均衡器,利用Memcached实现跨多个Tomcat实例的session共享。下面将详细解释这个...

    tomcat7.0+memcached 依赖jar包

    7. **测试与优化**:集成后,通过实际运行应用并进行性能测试,确定是否达到预期的性能提升,同时根据需求进行进一步的优化。 总结起来,"tomcat7.0+memcached依赖jar包"涉及到的是在Tomcat 7.0环境中集成Memcached...

    memcached jar 最新 tomcat 8.0 8.5

    5. **测试和优化**:确保Memcached的集成工作正常,并根据需求调整缓存策略和性能参数。 在实际开发中,考虑到不同版本的Tomcat可能存在API差异,因此选择适合版本的JAR包至关重要。对于Tomcat 8.5及更高版本,可能...

    memcached所需要的jar包---tomcat8.0

    在Web应用中,特别是在使用Java技术栈的Tomcat服务器上,Memcached常被用来实现session共享,提高应用的性能和可扩展性。 在标题中提到的"memcached所需要的jar包---tomcat8.0",指的是为了在Tomcat 8.0服务器上...

    memcached1

    我们将java_memcached-release_1.6.zip解压后的目录中的java_memcached-release_1.6.jar文件复制到java项目的lib目录下,然后我们来编写代码,比如我提供的一个应用类如下: package utils.cache; import java....

    tomcat7整合memcached所需jar包

    标题 "tomcat7整合memcached所需jar包" ...总的来说,整合Tomcat 7和Memcached是提升Java Web应用性能的有效手段,但需要正确配置和管理,以充分利用Memcached的优势。正确地添加和配置jar包是实现这一目标的关键步骤。

    memcached+tomcat7共享session所需要的jar包

    Memcached是一款高性能、分布式的内存对象缓存系统,适用于缓解数据库负载,提升Web应用性能。它将数据存储在内存中,以键值对的形式进行操作,提供快速的访问速度。 要实现Tomcat7与Memcached的Session共享,我们...

    MemCached-在Widnows环境下的Java之简单应用.docx

    Memcached 是一个高性能、分布式内存对象缓存系统,常用于减轻数据库的负载,通过将数据存储在内存中来加速读取。在Windows环境下,使用Java与Memcached进行交互需要几个关键步骤。 首先,你需要下载Memcached的...

    memcached配置session共享依赖jar包集合

    Memcached是一种高性能、分布式的内存对象缓存系统,常被用来解决session共享的问题。本篇将详细阐述如何利用Memcached配置session共享,并涉及所需依赖的jar包。 首先,Memcached作为一个缓存服务,能够存储会话...

    memcached需要的jar包

    集成完成后,确保通过单元测试验证功能的正确性,并使用监控工具(如Memcached自带的stats命令或第三方工具)监控Memcached的运行状态,以确保其性能和稳定性。 综上所述,集成Memcached与Tomcat7主要涉及下载和...

    tomcat memcached依赖包(各个版本).rar

    6. 测试验证:部署应用程序后,进行功能和性能测试,确保集成正确无误,并达到预期的性能提升。 在使用过程中,开发者需要注意版本兼容性问题,因为不同的Tomcat和Memcached版本可能会有不同的API或行为变化。此外...

    tomcat7+整合memcached jar包集合

    标题中的“tomcat7+整合memcached jar包集合”指的是在Tomcat 7这个流行的Java应用服务器上集成Memcached缓存系统的过程。Memcached是一种分布式内存对象缓存系统,广泛用于减轻数据库压力,提高Web应用的性能。在这...

    tomcat7+nginx+memcached 配置tomcat 集群以及负载均衡

    安装MSM时,需要将jar包添加到Tomcat的lib目录下,并在server.xml配置文件中进行相应设置,启用MSM并指定Memcached服务器的地址和端口。 Kryo序列化是MSM的一个可选选项,它是一种高效的Java对象序列化库。相比默认...

    Nginx+tomcat+memcached集群session共享(win7下)所用到

    在Tomcat的`lib`目录下,添加`spymemcached.jar`等依赖库,使Tomcat能够与Memcached通信。 4. **Nginx配置**: - 修改`nginx.conf`,在http或server上下文中,添加负载均衡配置。使用`ip_hash`指令实现session...

Global site tag (gtag.js) - Google Analytics