`

安装&常规错误&监控

阅读更多

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  


2.Memcached
今天的主角

Shell代码  收藏代码
  1. 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  


编译、安装

Shell代码  收藏代码
  1. ./configure --prefix=/usr && make && make install   


这里一定要注意指定--prefix,后面配置memcached的时候就有必要用到。
2.Memcached
解压

Shell代码  收藏代码
  1. tar zxvf memcached-1.4.13.tar.gz  


编译、安装

Shell代码  收藏代码
  1. ./configure --with-libevent=/usr/lib && make && make install  


这里一定要指定libevent的路径,否则启动的时候就有找不到libevent的so文件的错误!
启动

Shell代码  收藏代码
  1. memcached -d -m 512 -p 11211 -u root -c 256 -P /var/run/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


要关掉memcached

Shell代码  收藏代码
  1. kill -9 `cat /var/run/memcached.pid`    


是否正常?Telnet上去看看

Shell代码  收藏代码
  1. telnet xxx.xxx.xxx.xxx 11211  


然后输入

Shell代码  收藏代码
  1. 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  

退出。

三、系统服务
参照Nginx的系统服务,自己写了一个Memcached的系统服务脚本。
先构建/etc/init.d/memcahed这个文件,然后赋予其可执行权限:

Shell代码  收藏代码
  1. touch /etc/init.d/memcached  
  2. chmod +x /etc/init.d/memcached  


memcached脚本如下:

Shell代码  收藏代码
  1. #!/bin/bash  
  2. # v.0.0.1  
  3. # create by snowolf at 2012.5.25  
  4. #  
  5. # memcached  - This shell script takes care of starting and stopping memcached.  
  6. #  
  7. # chkconfig: - 90 10  
  8. # description: Memcache provides fast memory based storage.  
  9. # processname: memcached  
  10.   
  11. memcached_path="/usr/local/bin/memcached"  
  12. memcached_pid="/var/run/memcached.pid"  
  13. memcached_memory="1024"  
  14.   
  15. # Source function library.  
  16. . /etc/rc.d/init.d/functions  
  17.   
  18. [ -x $memcached_path ] || exit 0  
  19.   
  20. RETVAL=0  
  21. prog="memcached"  
  22.   
  23. # Start daemons.  
  24. start() {  
  25.     if [ -e $memcached_pid -a ! -z $memcached_pid ];then  
  26.         echo $prog" already running...."  
  27.         exit 1  
  28.     fi  
  29.   
  30.     echo -n $"Starting $prog "  
  31.     # Single instance for all caches  
  32.     $memcached_path -m $memcached_memory -l 0.0.0.0 -p 11211 -u root -d -P $memcached_pid  
  33.     RETVAL=$?  
  34.     [ $RETVAL -eq 0 ] && {  
  35.         touch /var/lock/subsys/$prog  
  36.         success $"$prog"  
  37.     }  
  38.     echo  
  39.     return $RETVAL  
  40. }  
  41.   
  42.   
  43. # Stop daemons.  
  44. stop() {  
  45.     echo -n $"Stopping $prog "  
  46.     killproc -d 10 $memcached_path  
  47.     echo  
  48.     [ $RETVAL = 0 ] && rm -f $memcached_pid /var/lock/subsys/$prog  
  49.   
  50.     RETVAL=$?  
  51.     return $RETVAL  
  52. }  
  53.   
  54. # See how we were called.  
  55. case "$1" in  
  56.         start)  
  57.             start  
  58.             ;;  
  59.         stop)  
  60.             stop  
  61.             ;;  
  62.         status)  
  63.             status $prog  
  64.             RETVAL=$?  
  65.             ;;  
  66.         restart)  
  67.             stop  
  68.             start  
  69.             ;;  
  70.         *)  
  71.             echo $"Usage: $0 {start|stop|status|restart}"  
  72.             exit 1  
  73. esac  
  74. exit $RETVAL  


注意这几行配置,请根据实际情况配置memcached执行文件路径,以及Memcached使用内存大小:

引用
memcached_path="/usr/local/bin/memcached"
memcached_memory="1024"



追加为系统服务:

Shell代码  收藏代码
  1. chkconfig --add memcached  
  2. chkconfig memcached on  



然后就可以通过service memcached start|stop|status|restart控制memcached了!

四、常规错误
一开始没有指定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  

 

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

 

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


提示找不到libevent-2.0.so.5

引用
        linux-vdso.so.1 =>  (0x00007fff41dfd000)
        libevent-2.0.so.5 => not found
        librt.so.1 => /lib64/librt.so.1 (0x0000003c94a00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c93a00000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003c92e00000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003c92a00000)


定位

Shell代码  收藏代码
  1. LD_DEBUG=libs /usr/local/bin/memcached -v  

 

引用
     19905:     find library=libevent-2.0.so.5 [0]; searching
     19905:      search path=/usr/lib/lib/tls/x86_64:/usr/lib/lib/tls:/usr/lib/lib/x86_64:/usr/lib/lib          (RPATH from file /usr/local/bin/memcached)
     19905:       trying file=/usr/lib/lib/tls/x86_64/libevent-2.0.so.5
     19905:       trying file=/usr/lib/lib/tls/libevent-2.0.so.5
     19905:       trying file=/usr/lib/lib/x86_64/libevent-2.0.so.5
     19905:       trying file=/usr/lib/lib/libevent-2.0.so.5
     19905:      search cache=/etc/ld.so.cache
     19905:      search path=/lib64/tls/x86_64:/lib64/tls:/lib64/x86_64:/lib64:/usr/lib64/tls/x86_64:/usr/lib64/tls:/usr/lib64/x86_64:/usr/lib64            (system search path)
     19905:       trying file=/lib64/tls/x86_64/libevent-2.0.so.5
     19905:       trying file=/lib64/tls/libevent-2.0.so.5
     19905:       trying file=/lib64/x86_64/libevent-2.0.so.5
     19905:       trying file=/lib64/libevent-2.0.so.5
     19905:       trying file=/usr/lib64/tls/x86_64/libevent-2.0.so.5
     19905:       trying file=/usr/lib64/tls/libevent-2.0.so.5
     19905:       trying file=/usr/lib64/x86_64/libevent-2.0.so.5
     19905:       trying file=/usr/lib64/libevent-2.0.so.5
     19905:
/usr/local/bin/memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory


注意这句:

引用
19905: trying file=/usr/lib64/libevent-2.0.so.5



做个软连接

Shell代码  收藏代码
  1. ln -s /usr/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5  


再试试:

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


这回找到了!

引用
        linux-vdso.so.1 =>  (0x00007fffffef6000)
        libevent-2.0.so.5 => /usr/lib64/libevent-2.0.so.5 (0x00002b5608a26000)
        librt.so.1 => /lib64/librt.so.1 (0x0000003c94a00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c93a00000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003c92e00000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003c92a00000)



五、监控
可以在服务器上配置一个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.   
  7. $MEMCACHE_SERVERS[] = 'mymemcache-server1:11211'// add more as an array  
  8. $MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'// add more as an array  



常见错误:

引用
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/usr/local/apache.../memcache.php on line 726


在memcache.php顶端加上“date_default_timezone_set('Asia/Hong_Kong');”即可,具体地域设置参考:http://www.php.net/manual/zh/datetime.configuration.php#ini.date.timezone

如果不方便搭建PHP服务,可以使用Perl脚本memcache-top
修改@default_instances或使用--instances参数:

Shell代码  收藏代码
  1. perl memcache-top-v0.6 --instances 10.11.155.26 10.11.155.41  





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

分享到:
评论

相关推荐

    服务器存储工作作业流程.docx

    服务对象 监控内容 服务器 监控主机服务器LED面板运行错误码和指示灯 监控服务器电源工作状态指示灯 监控服务器硬盘工作状态指示灯 监控服务器CPU使用百分比情况 监控操作系统关键文件系统空间使用情况 监控服务器...

    StatusPilatus:前所未有地监控您的PC!

    常规系统信息,例如主机名,操作系统,带有版本的程序列表等 支持多个网络接口的网络统计 电池信息和状态 各种各样的 有关正在运行的进程的信息 可配置的用户设置 稳定的发行 要在您的系统上安装该程序的构建版本,...

    常规订单管理系统.zip

    管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: ...

    眼睛:过程监控工具。 受蓝丸和上帝启发

    流程监控工具。 受到Bluepill和God的启发。 需要Ruby(MRI)&gt; = 1.9.3-p194。 使用赛璐oid和赛璐oid :: IO。 小演示,展示了常规命令以及链的工作方式: 安装: $ gem install eye 为什么? 我们在生产中使用了...

    window内核监控工具源代码

    1.常规的ZwQuerySystemInformation来列举 2通过打开驱动对象目录来列举 3搜索内核空间匹配驱动的特征来列举(这个功能里面我自己的主机一运行就死机,别的机器都没事,手动设置热键来蓝屏都不行,没dump没法分析,哎...

    基于无线传感器网络的煤矿瓦斯抽采系统设计

    提出了将常规控制技术和模糊控制技术用于瓦斯抽采系统的控制方法,即把复杂的数据处理、接入处理、数据转发传输、路由维护等工作交由无线中心节点来完成,可降低因多跳无线传输造成的数据错误(或丢包),减轻了前段信息...

    phpservermon:PHP服务器监控器

    具有2个级别的用户身份验证(管理员和常规用户)。 连接错误,外发电子邮件和短信的日志。 简单的cronjob实施可自动检查您的服务器。 有两种不同的方法来监视服务器: 服务 将在给定端口上连接到输入的IP或域。...

    McAfee 8.0 简体中文

    此 DAT 文件在常规更新期间 随病毒特征码文件一起下载。到本产品发布之日为止,缓冲区溢出保护码文 件中包括以下应用程序: - dllhost.exe - EventParser.exe - excel.exe - explorer.exe - ...

    Oracle数据库管理员技术指南

    1.6.1 利用 Oracle 安装程序创建数据库 1.6.2 使用安装程序创建数据库的注意 事项 1.6.3 怎样建立自己的定制数据库创建 脚本 1.6.4 如何从已有数据库克隆数据库 1.6.5 怎样利用 Database Configuration ...

    Total_Uninstall_6官方原版及破解相关100%成功

    “监控程序”模块,它可以监视到你的系统中安装一个新的程序所做的任何更改。它可以让你执行一个完整的卸载,而不必依赖于所提供的添加删除程序,它可以给后面的文件或更改。  最新版为6.2.2,不过可惜还用不了,...

    网格计算环境下工作流关键技术的研究

    网格工作流能方便地构建、执行、管理和监控网格应用,使 网格应用自动实施并高效执行。网格的动态性、分布性、异构性和自治性导致传统 工作流的方法和技术不能有效地处理网格环境中的若干问题,因此,需要针对网格 ...

    老男孩python 四期

    3、Python安装、环境准备 4、编程风格、语法要求、变量格式等 5、编写用户交互脚本 6、读取用户输入 7、基本流程控制,if..else/for x in…/while True 8、程序流程控制二,break\continue\ 嵌套循环 9、项目实践:...

    由0晋升200%系统高手

    1.1 常规安装过程 1.1.1 安装前该做些什么 1.1.2 常规安装 3 1.2 自动安装 4 1.2.1 带参数的安装 1.2.2 无人值守安装 1.3 多系统安装 1.3.1 为Linux准备空间 1.3.2 用分区魔术师准备Linux空间 1.3.3...

    硬盘监测分析工具 Hard Disk Sentinel Pro 5.61.11463 中文多语免费版.zip

    对于高级用户,还会显示所有原始数据,包括开机时间和读/写错误数。硬盘Sentinel解释了与S.M.A.R.T相关的性能和健身状况。值并显示计算的性能和运行状况百分比,总功率开启时间和估计的剩余寿命。 硬盘硬件和软件...

    如何编写弹性的MongoDB应用程序

    首先,我制定了《服务器发现与监控规范(ServerDiscoveryandMonitoringSpec)》——现在已应用于我们所有的驱动上,此规范极大地提升了驱动在应对网络错误和服务器故障转移时的稳健性,由于驱动程序的异常状况减少,...

    硬盘检测工具 HD_Tune 5 免费中文版 及 使用教程

    图12:HD Tune常规选项设置   图13:HD Tune基准选项设置   图14:HD Tune温度选项设置 图15:HD Tune健康选项设置   图16:HD Tune保存选项设置   总结:  HD Tune是国外的一款功能出色的硬盘检测工具,它...

    ego:简单的Go微服务框架

    自我 1帮助文档 2介绍EGO是一个集成里各种工程实践的框架。通过组件化的设计模式,保证了业务方能够统一的调用方式启动各种组件使用EGO的优势配置... 2.2提升故障排查效率统一错误码组件错误,慢响应,中断,常规请求拦

    微软活动目录管理管理简明手册

    在基于Windows 2000网络中,活动目录(Active Directory)是它的核心。活动目录是一个分布式的目录服务。网络信息可以分散在多台不同...0 `) M, t8 y9 `- K在安装活动目录前首先确定DNS服务正常工作,下面我们来安装根域...

Global site tag (gtag.js) - Google Analytics