吾知网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 7518|回复: 2
打印 上一主题 下一主题

Linux下memcache的安装和启动(转)

[复制链接]
跳转到指定楼层
楼主
发表于 2015-11-14 12:59:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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



沙发
 楼主| 发表于 2015-11-14 14:10:00 | 只看该作者
配置为自启动服务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是否已随系统启动

板凳
 楼主| 发表于 2015-11-14 17:12:46 | 只看该作者
监控
可以在服务器上配置一个PHP页面来监测Memcached的情况,
下载MemcachePHP



配置也比较简单,主要包括账户配置,以及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





先到这里,后续做压力测试,Java客户端开发,Spring系统集成等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|吾知网 ( 粤ICP备13013563号-1 )

GMT+8, 2024-4-29 21:01 , Processed in 1.062500 second(s), 7 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表