• (转)Memcached笔记——(一)安装&常规错误&监控


    Memcached笔记——(一)安装&常规错误&监控

    link:http://snowolf.iteye.com/blog/1447348

    08年的时候接触过Memcached,当时还对它的客户端产品嗤之以鼻,毕竟手工代码没有各种ORM原生XML配置方便。尽管如此,Memcached现在已经成了服务器架构里不可或缺的一部分!

    一、下载
    1.Libevent
    简单的说就是一个事件触发的网络库,Memcached离不开它。
    Shell代码 复制代码 收藏代码
    1. wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.17-stable.tar.gz
    wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.17-stable.tar.gz

    2.Memcached
    今天的主角
    Shell代码 复制代码 收藏代码
    1. wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
    wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz

    二、安装
    1.Libevent
    解压缩
    Shell代码 复制代码 收藏代码
    1. tar zxvf libevent-2.0.17-stable.tar.gz
    tar zxvf libevent-2.0.17-stable.tar.gz

    编译、安装
    Shell代码 复制代码 收藏代码
    1. ./configure --prefix=/usr && make && make install
    ./configure --prefix=/usr && make && make install 

    这里一定要注意指定--prefix,后面配置memcached的时候就有必要用到。
    2.Memcached
    解压
    Shell代码 复制代码 收藏代码
    1. tar zxvf memcached-1.4.13.tar.gz
    tar zxvf memcached-1.4.13.tar.gz

    编译、安装
    Shell代码 复制代码 收藏代码
    1. ./configure --with-libevent=/usr/lib && make && make install
    ./configure --with-libevent=/usr/lib && make && make install

    这里一定要指定libevent的路径,否则启动的时候就有找不到libevent的so文件的错误!
    启动
    Shell代码 复制代码 收藏代码
    1. memcached -d -m 50 -p 11211 -u root -P /tmp/memcached.pid
    memcached -d -m 50 -p 11211 -u root -P /tmp/memcached.pid

    参数
    引用

    -p <num> TCP port number to listen on (default: 11211)
    -U <num> UDP port number to listen on (default: 11211, 0 is off)
    -l <addr> interface to listen on (default: INADDR_ANY, all addresses)
    <addr> may be specified as host:port. If you don't specify
    a port number, the value you specified with -p or -U is
    used. You may specify multiple addresses separated by comma
    or by using -l multiple times
    -d run as a daemon
    -u <username> assume identity of <username> (only when run as root)
    -m <num> max memory to use for items in megabytes (default: 64 MB)
    -M return error on memory exhausted (rather than removing items)
    -c <num> max simultaneous connections (default: 1024)
    -v verbose (print errors/warnings while in event loop)
    -P <file> save PID in <file>, only used with -d option

    是否正常?Telnet上去看看
    Shell代码 复制代码 收藏代码
    1. telnet xxx.xxx.xxx.xxx 11211
    telnet xxx.xxx.xxx.xxx 11211

    然后输入
    Shell代码 复制代码 收藏代码
    1. stats
    stats

    接着就能看到:
    引用

    STAT pid 3021
    STAT uptime 3621
    STAT time 1331261509
    STAT version 1.4.13
    STAT libevent 2.0.17-stable
    STAT pointer_size 64
    STAT rusage_user 0.000000
    STAT rusage_system 0.000999
    STAT curr_connections 6
    STAT total_connections 7
    STAT connection_structures 7
    STAT reserved_fds 20
    STAT cmd_get 0
    STAT cmd_set 0
    STAT cmd_flush 0
    STAT cmd_touch 0
    STAT get_hits 0
    STAT get_misses 0
    STAT delete_misses 0
    STAT delete_hits 0
    STAT incr_misses 0
    STAT incr_hits 0
    STAT decr_misses 0
    STAT decr_hits 0
    STAT cas_misses 0
    STAT cas_hits 0
    STAT cas_badval 0
    STAT touch_hits 0
    STAT touch_misses 0
    STAT auth_cmds 0
    STAT auth_errors 0
    STAT bytes_read 72
    STAT bytes_written 1038
    STAT limit_maxbytes 52428800
    STAT accepting_conns 1
    STAT listen_disabled_num 0
    STAT threads 4
    STAT conn_yields 0
    STAT hash_power_level 16
    STAT hash_bytes 524288
    STAT hash_is_expanding 0
    STAT expired_unfetched 0
    STAT evicted_unfetched 0
    STAT bytes 0
    STAT curr_items 0
    STAT total_items 0
    STAT evictions 0
    STAT reclaimed 0
    END

    上面状况说明Memcached服务正常。
    还可以试试get、set、delete、replace
    引用
    set foo 0 0 3 (保存命令)
    bar (数据)
    STORED (结果)
    get foo (取得命令)
    VALUE foo 0 3 (数据)
    bar (数据)


    输入
    Shell代码 复制代码 收藏代码
    1. quit
    quit
    退出。
    三、常规错误
    一开始没有指定libevent路径安装memcached的时候,启动memcached就报这个错误:
    引用
    memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

    其实这个文件就在/usr/lib下。错就错在Linux是64bit系统,如果没有指定libevent路径,memcached就会去/usr/lib64下去找。
    找到这个文件
    Shell代码 复制代码 收藏代码
    1. whereis libevent-2.0.so.5
    whereis libevent-2.0.so.5

    引用
    libevent-2.0.so: /usr/local/lib/libevent-2.0.so.5

    Shell代码 复制代码 收藏代码
    1. ldd /usr/bin/memcached
    ldd /usr/bin/memcached

    提示找不到libevent-2.0.so.5
    引用
    libevent-2.0.so.5 => not found

    libpthread.so.0 => /lib64/libpthread.so.0 (0x00000032f2600000)

    libc.so.6 => /lib64/libc.so.6 (0x00000032f1a00000)

    /lib64/ld-linux-x86-64.so.2 (0x00000032f1600000)

    定位
    Shell代码 复制代码 收藏代码
    1. LD_DEBUG=libs /usr/bin/memcached -v
    LD_DEBUG=libs /usr/bin/memcached -v

    注意这句:
    引用
    9873: trying file=/usr/lib64/libevent-2.0.so.5


    做个软连接
    Shell代码 复制代码 收藏代码
    1. ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5
    ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5

    再试试:
    Shell代码 复制代码 收藏代码
    1. ldd /usr/local/bin/memcached
    ldd /usr/local/bin/memcached

    这回找到了!
    引用
    libevent-2.0.so.5 => /usr/lib64/libevent-2.0.so.5 (0x00002adde8270000)

    libpthread.so.0 => /lib64/libpthread.so.0 (0x00000032f2600000)

    libc.so.6 => /lib64/libc.so.6 (0x00000032f1a00000)

    librt.so.1 => /lib64/librt.so.1 (0x00000032f2a00000)

    /lib64/ld-linux-x86-64.so.2 (0x00000032f1600000)


    四、监控
    可以在服务器上配置一个PHP页面来监测Memcached的情况,
    下载MemcachePHP



    配置也比较简单,主要包括账户配置,以及Memcached Server地址配置。
    Php代码 复制代码 收藏代码
    1. define('ADMIN_USERNAME','memcache'); // Admin Username
    2. define('ADMIN_PASSWORD','password'); // Admin Password
    3. define('DATE_FORMAT','Y/m/d H:i:s');
    4. define('GRAPH_SIZE',200);
    5. define('MAX_ITEM_DUMP',50);
    6. $MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; // add more as an array
    7. $MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array
    define('ADMIN_USERNAME','memcache'); 	// Admin Username
    define('ADMIN_PASSWORD','password');  	// Admin Password
    define('DATE_FORMAT','Y/m/d H:i:s');
    define('GRAPH_SIZE',200);
    define('MAX_ITEM_DUMP',50);
    
    $MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'; // add more as an array
    $MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array
    

    如果不方便搭建PHP服务,可以使用Perl脚本memcache-top
    修改@default_instances或使用--instances参数:
    Shell代码 复制代码 收藏代码
    1. perl memcache-top-v0.6 --instances 10.11.155.2610.11.155.41
    perl memcache-top-v0.6 --instances 10.11.155.26 10.11.155.41




    先到这里,后续做压力测试,Java客户端开发,Spring系统集成等。

    相关链接:
    Memcached笔记——(二)XMemcached&Spring集成


    启动脚本 http://pastebin.com/wH7WQUra http://dngood.blog.51cto.com/446195/703347
  • 相关阅读:
    shell 时间循环
    t
    IntelliJ IDEA For Mac 快捷键
    JVM的默认参数
    qt不同模块使用多语言
    cocos2dx 实现gpu instancing
    so so.*.*
    Android开发-解决 AIDL 中找不到couldn't find import for class错误
    Android Watchdog源码简析--Based on Android 6.0.1
    View绘制流程--Based on kitkat
  • 原文地址:https://www.cnblogs.com/tangtianfly/p/2446253.html
Copyright © 2020-2023  润新知