[url=http://tangent.org/552/libmemcached.html]libmemcached[/url]是一个基于C/C++实现的memcached client library,[url=http://blog.evanweaver.com/files/doc/fauna/memcached/files/README.html]memcached gem[/url]给这个library提供了ruby封装,根据原作者的性能评测,它比目前常用的memcache-client gem最多要[url=http://blog.evanweaver.com/files/doc/fauna/memcached/files/BENCHMARKS.html]快150倍[/url]。
因为对memcache的操作在rails处理整个http请求中所占时间比例并不多,而且JavaEye网站大部分是做cache读取操作,于是做了2个试验测试一下2者对于提升整个网站的性能到底有多少帮助:
1. 测试访问JavaEye网站的首页,在这个请求中只有一个缓存读取操作,使用ab简单地跑单次请求10000次:
使用memcache-client,平均完成每个请求是9.247 ms
使用memcached,平均完成每个请求是8.982 ms
[b]对于整体性能提升在3%左右[/b]
2. 测试访问某个论坛版面的页面,整个请求有超过60次的缓存读取操作,使用ab简单跑单次请求1000次:
使用memcache-client,平均完成每个请求是95.872 ms
使用memcached,平均完成每个请求是91.591 ms
[b]对于整体性能提升在5%左右[/b]
从试验可以看出,对于整体性能还是有一定提高的。JavaEye用的cache插件是cache_fu,它只支持memcache-client,不过通过简单的修改就可以支持这个新gem,我提交了一个补丁,有兴趣的话可以从这里下载到[url=https://groups.google.com/group/acts_as_cached/browse_thread/thread/ff2eaea0c3c61611]补丁[/url]。
--分割线--
cache_fu的作者已经将这个补丁添加到代码树,可以从github checkout: [url]http://github.com/defunkt/cache_fu/tree/master[/url]
因为对memcache的操作在rails处理整个http请求中所占时间比例并不多,而且JavaEye网站大部分是做cache读取操作,于是做了2个试验测试一下2者对于提升整个网站的性能到底有多少帮助:
1. 测试访问JavaEye网站的首页,在这个请求中只有一个缓存读取操作,使用ab简单地跑单次请求10000次:
使用memcache-client,平均完成每个请求是9.247 ms
使用memcached,平均完成每个请求是8.982 ms
[b]对于整体性能提升在3%左右[/b]
2. 测试访问某个论坛版面的页面,整个请求有超过60次的缓存读取操作,使用ab简单跑单次请求1000次:
使用memcache-client,平均完成每个请求是95.872 ms
使用memcached,平均完成每个请求是91.591 ms
[b]对于整体性能提升在5%左右[/b]
从试验可以看出,对于整体性能还是有一定提高的。JavaEye用的cache插件是cache_fu,它只支持memcache-client,不过通过简单的修改就可以支持这个新gem,我提交了一个补丁,有兴趣的话可以从这里下载到[url=https://groups.google.com/group/acts_as_cached/browse_thread/thread/ff2eaea0c3c61611]补丁[/url]。
--分割线--
cache_fu的作者已经将这个补丁添加到代码树,可以从github checkout: [url]http://github.com/defunkt/cache_fu/tree/master[/url]