xmemcached 0.60 优化过程

充分利用jprofile等工具观察性能瓶颈,才能对症下药,盲目的优化只是在浪费时间,并且效果可能恰恰相反
1、 观察到CountDownLatch.await占据最多CPU时间,一开始认为是由于jprofiler带来的影响,导致这个方法调用时间过长,从而忽 略了这一点,导致后面走了不少弯路。实际上await方法占用50%的CPU,而网络层和序列化开销却比较低,这恰恰说明这两者的效率低下,没办法充分利 用CPU时间,后来观察spymemcached的CPU占用情况,await占用的时间低于30%,优化后的结果也是如此。

2、因为没有深入理解这一点,我就盲目地开始优化,先从优化协议匹配算法开始,匹配ByteBuffer一开始用简单匹配(O(m*n)复杂 度),后来替代以KMP算法做匹配,想当然以为会更快,比较了两者效率之后才发现KMP的实现竟然比简单匹配慢了很多,马上google,得知比之kmp 算法效率高上几倍的有BM算法,马上实现之,果然比KMP和简单匹配都快。换了算法后,一测试,有提升,但很少,显然这不是热点。然后开始尝试改线程模型并测试,一开始想的是往上加线程,毕竟序列化是计算密集型,搞cpu个数的线程去发送command,调整读Buffer的线程数,测试效率没有提升甚至 有所降低,期间还测试了将协议处理改成批处理模式等,全部以失败告终。

3、此时才想起应该观察下spymemcached的CPU使用情况,才有了上面1点提到的观察,记的在测试yanf4j的echo server的时候,我发现读Buffer线程数设为0的事情下比之1的效率更高,也就是说仅启动一个线程处理Select、OP_WRITE和 OP_READ的事件,对于echo这样简单的任务来说是非常高效的,难道memcached也如此?立马设置为0并测试,果然提升很多,与 spymemcached的TPS差距一下减小了2000多,进一步观察,由于xmemcached构建在yanf4j的基础上,为了分层清晰导致在发送 和接收消息环节有很多冗余的操作,并且我还多启动了一个线程做command发送和优化get、set操作,如果能磨平这些差异,扩展yanf4j,避免了队列同步开销,这样也不用额外启动线程,效率是否更高呢?得益于yanf4j的模块化,修改工作顺利进行,最后的测试结果也证明了我的猜测,效率已经接近 spymemcached甚至超过。

文章转自庄周梦蝶  ,原文发布时间2009-03-06

时间: 2025-01-02 00:56:21

xmemcached 0.60 优化过程的相关文章

Android4.0开机启动速度优化过程经验总结

Android4.0开机启动速度优化过程经验总结         笔者EDE101使用的平台是:A10+android4.0.4+16GB NAND+1G DDR+(1280 X RGB X 800).项目进入收尾阶段,需要着重解决一下开机速度的问题,客户反映还是太慢了一点,当然我们得列入高优先级重点攻关解决了.优化开机速度前,平均android启动速度大概在39秒样子,A10跑1G.以下测试开关机都是按电源键正常操作.系统突然掉电的情况下,重新开机文件系统需要做recovery,在EDE101

总结:网站优化过程中你容易忽略的知识

大家好,我是宏图互联.我从事网站优化工作已经有一年多的时间了,在网站优化过程中,我发现里面有很多大家容易忽略的知识点,这里我将它们总结如下. 一.关键词 1.关键词:包括:目标关键词.长尾关键词.相关关键词,其中搜索量大的称热门关键词.网站关键词密度不超过10% ,一般在2%-8%之间. 2.关键词的选择 一定的搜索量200-600 有商业意向 竞争不大(网站多少.域名独立也就是指是否用首页来优化这个关键词.收录多少.快照更新时间.外链多少.关键词是否精确匹配.建站时间.pr值.站内内容规模.)

接手秀当网一个月 分析优化过程及结果

6月初辞职,六月下旬(20号)进入新的公司,开始接手公司网站秀当网的优化推广,到今天为止刚好25天,在这接近一个月的时间里网站还是有些变化的,个人觉得整体是在朝着好的方向发展,今天就来总结下这一个月的优化过程及结果,老手看看就过,新手可以留意下,或许对你们有帮助. 接手秀当网之后惯性的对它整体审查了一番,权重.收录.快照.外链.友链.PR.世界排名.关键词排名.界面风格.用户体验度等等,整体来说网站还是比较强大的,用户体验度做得比较好,真正为用户们提供了帮助,所以拥有一批固定的用户.而且它的收录

解析网站优化过程中的小技巧

对于很多比较资深的站长来说,网站优化就是一份轻松有趣且充满自豪感的工作,但是很多新手seoer在学习网站优化时会感觉有些吃力,一方面是不懂得如何贯通优化的思路,另一方面是不知道如何简单的运用一些小技巧来进行网站的优化.下面易水上海SEO简单介绍下网站优化过程中的一些小技巧: 第一点:学会用robots文件.很多站长不理解了,robots.txt文件是一个禁止搜索引擎爬行的文件,seo的工作不就是想让搜索引擎收录吗,为什么要禁止呢?当我们在建设一个新站时,当我们还没有整理好网站或者栏目的title

在SQL server的性能优化过程中的常见技巧

在SQL server 的http://www.aliyun.com/zixun/aggregation/14109.html">性能优化过程中,TSQL的语句优化是很重要的一环.当您使用各种手段找出系统最需要优化的语句后,应该如何对该语句进行优化呢?下面列出一些TSQL 语句优化的常见技巧. 1. 语句的执行计划分析 首先要对该语句的执行计划(execution plan)进行分析,找出语句运行慢的原因.比如说, <>在检查执行计划是否包含table scan /index

Tomcat配置SSL nginx+tomcat配置https实例及优化过程

Tomcat配置SSL,使用openssl制作证书 制作证书以及Tomcat配置     搭建openssl环境,下载openssl并设置环境变量方便命令行的使用:    修改openssl配置文件,设置dir目录,如设置dir=e:/temp/openssl_ca,然后根据配置文件分别建立子目录:certs.crl.newcerts.private分别用来存放签发的证书.吊销的证书.证书申请.私钥:         cd /d e:\temp\openssl_ca         mkdir 

交换友情链接是seo优化过程中很常见也很重要的一部分

摘要: 交换友情链接是seo优化过程中很常见也很重要的一部分,那么就很有必要来详细了解一下如何区分友情链接的质量好坏.有效提高外链质量,这样才能让我们的优化到达一个高效的状态 交换友情链接是seo优化过程中很常见也很重要的一部分,那么就很有必要来详细了解一下如何区分友情链接的质量好坏.有效提高外链质量,这样才能让我们的优化到达一个高效的状态.下面NET新趋势就为大家从几个方面具体说一下关于友情链接交换时需要注意的一些要点. 第一.对方友情链接的数量.这一点为什么要放在第一位呢?因为这是很多seo

SEO优化过程中经常被忽略的细节

很多新手SEOER在网站优化过程中,经常会忽略一些细节,而正是由于这些细节没有处理恰当,导致网站两三个月都没有排名.在长期的工作实践中,我总结出来主要有以下三点: 1.死链接的处理 死链接就是无效路径.如果死链接没有被处理过,那么当用户访问这条死链接的时候,网站就会显示默认的错误页面给用户,这个页面叫做404页面.默认未经设置的404页面对于用户而言是不友好的,会大大增加用户的跳出率.因此,我们有必要设置一个适合网站的404页面,该页面的功能是将用户引导回我们的网站.处理完影响用户体验的404页

互联网产品优化过程中的经验

文章描述:互联网产品优化经验分享. 产品上线后,无论是否达到预期,都有非常大的优化空间,以下列一些产品优化过程中的经验,仅供参考: 一.建立产品监控体系 从宏观上来看产品要关注的大的点,并把其拆开,如果能实时监控最好,不能实时的全部放在报表中,每天看一次也可以,从中可以发现产品在大的点上是否出了问题! 举例:邀请回来的用户,有多少成功注册了,这里可以设置成一个转化率,如果某个点突然有较大的变化,能及时发现. 这里为什么说只列大的点呢!如果切分开,点就太多了,在作局部优化时可以把大点切分成小的点来