Linux下memcache的安装和启动(转)
memcache是高性能,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。据说官方所说,其用户包括twitter、digg、flickr等,都是些互联网大腕呀。目前用memcache解决互联网上的大用户读取是非常流行的一种用法。下载安装下载了,我到了其官方(http://memcached.org/),目前最新的下载版本是1.4.24还要再安装libevent这个软件,从官方(http://monkey.org/~provos/libevent/)下载,目前最新的稳定版是2.0.22。下载后,将其上传到了/home/blue/下面执行以下命令
cd /home/blue
tar zxvf memcached-1.4.24.tar.gz
tar zxvf libevent-2.0.22-stable.tar.gz
#安装libevent
cd libevent-2.0.22-stable
./configure -prefix=/usr
make
make install
#安装memcache
cd /home/blue/memcached-1.4.24
./configure -prefix=/usr/local/memcached --with-libevent=/usr
make
make install
启动memcache服务进入bin目录,执行:./memcached -d -m 1024 -u blue,但是系统说有一个共享库没有加载,共享库的名称为:libevent-1.4.so.2首先要查看一下memcached 这个命令用到的链接库地址在哪儿。执行如下命令可以查看:LD_DEBUG=libs /usr/local/memcached/bin/memcached -v
显示出memcache从哪些地方找libevent-1.4.so.2这个文件,所以,我们只有将libevent-1.4.so.2这个文件指定到上面任意一个目录即可。这里我们将其指定到/lib64/下面。做一个软连接即可。命令如下:ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2在启动一下memcache服务:./memcached -d -m 1024 -u blue就可以了下面将memcached命令的参数罗列如下,
# /usr/local/bin/memcached -d -m 200 -u root -l 192.168.1.91 -p 12301 -c 1000 -P /tmp/memcached.pid相关解释如下:
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,这里是200MB
-u是运行Memcache的用户,如果当前为 root 的话,需要使用此参数指定用户。
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.1.91
-p是设置Memcache监听的端口,我这里设置了12301,最好是1024以上的端口
-c选项是最大运行的并发连接数,默认是1024,这里设置了256
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid
停止Memcache进程:# kill `cat /tmp/memcached.pid`
也可以启动多个守护进程,但是端口不能重复
一开始说的“-d”参数需要进行进一步的解释-d install 安装memcached-d uninstall 卸载memcached
-d start 启动memcached服务
-d restart 重启memcached服务
-d stop 停止memcached服务
-d shutdown 停止memcached服务
检查服务:1、查看启动的memcache服务:netstat -lp | grep memcached
2、查看memcache的进程号(根据进程号,可以结束memcache服务:“kill -9 进程号”)ps -ef | grep memcached
配置为自启动服务1.编写memcached自启动脚本或直接使用memcached安装包中的脚本(位置如下,本文使用官方自带的脚本)
2.修改自启动脚本(红色部分标识,中文注释仅限本文提示用,安装包没有)
#! /bin/sh
#
# chkconfig: - 55 45
# description:The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/memcached
# Source function library - for other linux
#. /etc/rc.d/init.d/functions
# Source function library - for suse linux
. /lib/lsb/init-functions
PORT=11211
USER=root
#最大连接数,根据实际需求修改
MAXCONN=1024
#最大内存量,单位M
CACHESIZE=128
OPTIONS=""
if [ -f /etc/sysconfig/memcached ];then
. /etc/sysconfig/memcached
fi
# Check that networking is up.
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
RETVAL=0
prog="memcached"
start () {
echo -n $"Starting $prog: "
# insure that /usr/local/memcached has proper permissions
chown $USER /usr/local/memcached
/usr/local/memcached/bin/memcached -d -p $PORT -u $USER-m $CACHESIZE -c $MAXCONN -P /usr/local/memcached/memcached.pid $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached
}
stop () {
echo -n $"Stopping $prog: "
killproc memcached
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f /var/lock/subsys/memcached
rm -f /usr/local/memcached/memcached.pid
fi
}
restart () {
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status memcached
;;
restart|reload)
restart
;;
condrestart)
[ -f /var/lock/subsys/memcached ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
exit 1
esac
exit $?
3.将此脚本cp到/etc/init.d目录下并改名为memcached,然后执行chmod a+x memcached,如下:
shell > cp memcached.sysv /etc/init.d/memcached
shell > chmod 755 /etc/init.d/memcached
4.将memcached加入系统服务:
shell > chkconfig --add memcached
shell > chkconfig memcached on
5.以服务方式运行memcached
shell > service memcached start
以上如成功则重启下系统后查看下memcached是否已随系统启动
监控
可以在服务器上配置一个PHP页面来监测Memcached的情况,
下载MemcachePHP
http://dl.iteye.com/upload/attachment/0065/8749/733cf774-c176-3bb9-8946-25765722f93a.png
配置也比较简单,主要包括账户配置,以及Memcached Server地址配置。
[*]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
常见错误:
引用
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参数:
[*]perl memcache-top-v0.6 --instances 10.11.155.26 10.11.155.41
http://dl.iteye.com/upload/attachment/0065/8745/dd07bc19-0bf0-3f4f-8e37-0498c730dc90.png
先到这里,后续做压力测试,Java客户端开发,Spring系统集成等。http://snowolf.iteye.com/images/smiles/icon_smile.gif
页:
[1]