发表于: 2018-04-25 22:12:28

1 551


今天完成的事情:

Linux上安装memcache

首先了解了memcache的基本知识


Memcache是一个高性能的分布式内存对象缓存系统

通过在内存缓存数据和对象减少读取数据库的次数,从而提高了网站访问的速度。 


其工作流程:

1先检查客户端请求的数据是否在memcache中,若有,直接把请求数据返回,不再对数据库进行任何操作;

2如果不在,就去查数据库,取出数据返回给客户端,同时把数据缓存一份到memcache中;

3每次更新数据库的同时更新memcached中的数据,保证一致性;

4当分配给memcache的内存空间用完之后,会使用LRU(最近最少使用)策略加上到期失效策略,失效数据首先被替换,然后正在替换掉最近未使用的数据。


memcache采用的内存分配方式是固定空间分配。


这张图很清晰的说明了memcache的内存分配方式

1 memcache将内存空间分为一组slab

2 每个slab下又有若干个page,每个pagemeren是1M

3 每个page里面包含一组chunk,chunk是真正存放数据的地方,同一个slab里面的chunk的大小是固定的

4 有相同大小chunk的slab被组织在一起,称为slab_class


然后就是下载安装memcache ,源码编译方式安装

由于memcache依赖于libevent,所以首先要安装libevent

将libevent-2.1.8-stable.tar.gz 安装包 传到linux ,解压后,进入其目录

依次执行

1)        ./configure -prefix=/usr

2)        make 

3)        make install  

这里如果采用默认安装,libevent会被安装目录到/usr/local/lib下,因此需要建立libevent-2.1.so.6到 /usr/lib 的软连接,这样其他程序运行时才能找到libevent库:

ln –s /usr/local/lib/libevent-2.1.so.6  /usr/lib/libevent-2.1.so.6

在64位机器上还需做一个64位库的链接,否则运行memcache时会报找不到libevent的错误

ln -s /usr/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6


接着再安装memcache

同样的也是到官网下载安装包,解压,进入解压后的目录

依次执行:

1)        ./configure -prefix=/usr/local/memcached --with-libevent=/usr

2)        make 

3)        make install  


这里的--with-libevent=/usr 意思是建立libevent的依赖

然后照着教程将memcache的官方启动脚本做了一个修改,源码包里有官方的脚本


将此脚本cp到/etc/init.d目录下并改名为memcached,然后执行 chmod 755 /etc/init.d/memcached

修改后的脚本

#! /bin/sh

#

# chkconfig: - 55 45

# description:  The memcached daemon is a network memory cache service.

# processname: memcached

# config: /etc/sysconfig/memcached

# Source function library.

. /etc/rc.d/init.d/functions

PORT=11211

USER=nobody

MAXCONN=1024

CACHESIZE=64

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 /var/run/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 $?



将memcached加入系统服务:

依次执行

    chkconfig --add memcached

    chkconfig memcached on


以服务方式运行memcached


    service memcached start


重启后查看memcache的进程,发现已启动



然后在Linux中使用telnet 命令,提示没有这个命令,所以又要安装telnet服务,telnet服务又分为客户端和服务端,网上说一般都会系统自带telnet客户端,然而我并没有。。。

经过一番查找,发现要安装telnet,还需要再去安装xinetd服务。。。。

执行如下命令

yum -y install xinetd


telnet,默认是不开启服务,修改文件/etc/xinetd.d/telnet来开启服务

第一次修改,此文件若不存在,可自己vim创建修改:
       修改 disable = yes 为 disable = no


# default: yes

# description: The telnet server servestelnet sessions; it uses \

#      unencrypted username/password pairs for authentication.

service telnet

{

  flags           = REUSE

  socket_type     = stream

  wait            = no

  user            = root

  server          =/usr/sbin/in.telnetd

  log_on_failure  += USERID

  disable         = no 

}


启动telnet和依赖的xinetd服务:

在centos7中(无xinetd的service启动项)  因此需要执行

systemctl restart  xinetd.service

/bin/systemctl restart  xinetd.service


接着就可以使用telnet远程登录,若果无法登录有可能是防火墙把23端口封掉,需要修改防火墙设置。


明天计划的事情:

把memcache弄好,然后重新进行压测

遇到的问题:

暂时还不清楚memcache的实际用法

收获:

了解mamcache的基本原理和工作流程,在服务器上配置mamcache

进度:

任务六步骤二

任务开始时间:4.24

预计demo时间:5.8

是否延期:否

禅道地址:http://task.ptteng.com/zentao/project-task-562.html



返回列表 返回列表
评论

    分享到