专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » memcached:memcached java client tuning 性能改进过程 »正文

memcached:memcached java client tuning 性能改进过程

来源: 发布时间:星期四, 2009年1月15日 浏览:39次 评论:0
  想用刀去杀怪时候却发现刀是生锈……当你想用高速缓存Cache时候却发现访问缓存Cache工具很慢memcached java client API 就是这样把生锈

  java memcached client 是个第 3方提供访问 memcached library所以我对他性能直抱怀疑态度在碰到增加线程不能提高速度并且client CPU 99%情况的后更坚定了我看法经过分析他代码找到了两个主要问题:

  1. synchronized 问题

  java memcached client源文件大量思路方法里面都直接使用 synchronized 如 getConnection, checkin而SockIOPool类似个Singleton, 因此造成多线程失去了意义同时 synchronized 思路方法里面又大量使用了 Hashtable 等synchronized保护集合类

  2. InputStream 不优化使用方法:

  未加Buffer

  private DataInputStream in = DataInputStream( sock.getInputStream );

  次读字节

  while (in.read(b, 0, 1) != -1)...

  虽然说局域网网速不存在问题但是这样操作话速度可想而知

  改了这些问题的后访问速度每秒由6,666变成15,000左右

  上面两个是主要其他还有些小问题比如 每次使用都需要从两个hashtable中checkin, checkout也会造成大量同步锁等待这个问题还没改整个思路都是基于这个改了这个地方基本上要全部重写了

  另外如果再使用Java NIO加上同步锁些问题得到改善估计每秒可优化到20,000次左右

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: