zoukankan      html  css  js  c++  java
  • Couchbase的bug引起的缓存服务器CPU占用高

    目前我们的非持久化缓存服务器(memcached)与持久化缓存服务器(nosql)用的都是Couchbase(前身是Membase)。

    之前每次出故障时,阿里云总是拿nosql服务器说事,因为nosql服务器的CPU占用的确不正常。

    上图是Linux中top命令运行的结果。问题表现为,Couchbase总是只用一个CPU核跑memcached进程(nosql中也用到了memcached),CPU几乎跑满,而nosql服务器实际有4个核。1个核累得要死,而其他3个核闲得蛋疼,这的确是不正常的情况,会造成有些情况下读取缓存速度慢。阿里云对它的怀疑有一定的道理。

    后来,我们通过日志记录了nosql服务器的读取数据耗时,得到的数据是超过400ms的nosql读取1天发生100多次,相对于每天超过100万的读取次数,这个问题影响不大。

    但是,阿里云还是每次拿它说事,我们都厌烦了。今天又提到了,我们实在受不了了,怎么办?只有找出问题的真正原因,才能摆脱它。

    对于Couchbase CPU占用高的问题,我们在4月份研究过,当时用的是Couchbase 2.0。我们在Couchbase官方论坛的一篇帖子(High cpu usage in memcached process (couchbase 2.0))中知道了Couchbase 2.0存在CPU占用高的bug,但在Couchbase 2.0.1中已经修复了。于是,我们将Couchbase升级到了2.0.1,以为问题解决了。后来发现还是会出现CPU占用高的情况,以为是其他原因引起的。

    今天,我们在Couchbase官方论坛(High cpu memcached process)中找到答案(6楼的回答):

    The fix caused a performance regression and was backed out at the last minute. At the time I made that comment the fix was in the 2.0.1 branch. We are fixing it for 2.0.2 though. I apologize for the misleading comment.

    原来是Couchbase给大家开了一个玩笑,这个bug在2.0.1中并没有被修复,要等到2.0.2。

    好了,终于找到了问题的真正原因(nosql服务器CPU占用高的原因,不是之前故障的原因),这下清静了,这下放心了。

  • 相关阅读:
    String与其他类型的转换
    Java并发(5):同步容器
    Java并发(4):ThreadLocal
    Java并发(2):Lock
    Java并发(1):synchronized
    Java并发之——线程池
    每天一个设计模式(7):单例模式
    Java集合(9):ConcurrentHashMap
    10 常用端口和Web 页面请求过程
    9 应用协议
  • 原文地址:https://www.cnblogs.com/cmt/p/3090761.html
Copyright © 2011-2022 走看看