发表于: 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
评论