Memcache异常超时诊断--mctop

    昨天排查MC连接超时发现,发现同时是一个业务的另一个MC未发现异常,通过监控发现网络未丢包但两MC的流量明显不一致,在连接数基本相同的情况下带宽出现3倍的差别,可以断定是业务调用的某个key的value值过大导致的。

    好吧,知道原因了该如何定位到哪个key呢?以下是一般的做法:

  1. 通过抓包发现调用的频繁的请求数据包;

  2. 通过MC协议分析是否该key值异常过大;


貌似你有点晕了,呵呵,这种方法是很繁琐,定位原因比较慢,有没有更好的方法呢?下面就介绍下mctop


    mctop是开源的一个检测工具,依靠ruby的pcap进行抓包分析,该包下载地址 GITHUP https://github.com/etsy/mctop


解压执行下:

# ./mctop 

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require‘: no such file to load -- pcap (LoadError)

from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require‘

from ./../lib/cmdline.rb:2

from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require‘

from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require‘

from ./mctop:10


通过报错了解到,需要装pcap,但发现装完还是有问题,没办法升级下ruby吧,我现在是1.8.7升级至1.9.2下载地址后,需要安装以下组件

#/usr/local/bin/gem install bundle

#/usr/local/bin/gem install rake

#/usr/local/bin/gem install ruby-pcap

#rm -f /usr/bin/ruby 

#ln -s /usr/local/bin/ruby  /usr/bin/ruby


再运行下 

# ./mctop --help

Usage: mctop [options]

    -i, --interface=NIC              Network interface to sniff (required)

        --host=HOST                  Network host to sniff on (default all)

    -p, --port=PORT                  Network port to sniff on (default 11211)

    -d, --discard=THRESH             Discard keys with request/sec rate below THRESH

    -r, --refresh=MS                 Refresh the stats display every MS milliseconds

    -h, --help                       Show usage info


然后赶紧用它监控一下异常的端口:

#./mctop -i eth1 --host=10.x.x.85 -p xxx -r 1000


如下图

技术分享


一眼就看到了,是esf-wordfilter__all的值过大占了4m/s的带宽,通知业务部门优化之~


总结:

    mctop是一款很好的在线监控程序,同时也给了启发,可以根据这个做一套MC监控,好了,就这样吧~

本文出自 “飞奔的蜗牛” 博客,请务必保留此出处http://zhangbo.blog.51cto.com/350645/1600512

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。