这里的slab就是相当于memcached提供的缓存,memcached服务器堆内存的分配单位就是slab,一个slab大小在默认情况下是1MB,而每一个slab又被分为若干个chunk,就像对磁盘或内存的使用一样一层一层的分割直到最小单位,而这里chunk就是最小的单位了,然后在这些chunk中保持我们缓存的条目 item,而chunk的大小也就完全一样了,因此,对于一个字节或者十个字节可能使用的chunk数目是一样多的,也就是说最少也存在着浪费.
还有一点需要说明的是,在每一个chunk中除了保存缓存条目的值(value)以外, 还有结构体, key .
图中chunk的增长大小就是因为有默认 -f 1.25的增长因子作用.
添加memcached可执行程序的软连接到系统PATH目录下
ln -s /usr/local/memcached_1.4.24/bin/memcached /usr/bin/
8,memcached的其他工具
在memcached的源码包中有一个scripts目录, 里面由一些自带的脚本和工具.
8.1, damemtop
该工具使用perl模块,如果以前没有安装过这些模块,那么只有安装过后才可以使用.
8.1.1, 安装perl相关模块
下面是AnyEvent YAML TermReadKey 三个模块的安装.
# yum install perl perl-TermReadKey perl-YAML.noarch -y
# ./damemtop
YAML Error: Couldn't open /etc/damemtop.yaml for input:\n
Code: YAML_LOAD_ERR_FILE_INPUT
at ./damemtop line 543
运行脚本报错,, 提示需要/etc/damemtop.yaml 文件
那么可以吧scripts 目录下的 damemtop.yaml 复制到 /etc/ 目录下
分析配置文件 damemtop.yaml
这个文件的格式采用了YAML(是YAML Ain't a Markup Language的缩写).下面看一看配置文件内容:
做好必要的配置后,就可直接运行 damemtop 了
如图:
8.2 memcached-sysv服务脚本
顾名思义,该文件是个系统服务脚本.
# cp memcached.sysv /etc/init.d/memcached
# chkconfig --add memcached
查看服务脚本,由于我们的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=memcached
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 /var/run/memcached
daemon memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/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 /var/run/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 $?
---------------------------------------------
# mkdir /var/run/memcached
# chown memcached:memcached /var/run/memcached
# service memcached restart //看能否正常重启和启动服务.
当然如配置文件所示,响应的参数可以单独写到 /etc/sysconfig/memcached 文件中,这样memcached的配置文件结构更清晰.
8.3, memcached-tool
memcached-tool 是基于perl 的脚本,使用前务必确认已经安装好perl
# ./memcached-tool //直接运行工具查看效果
执行没有参数的脚本后,会给出使用示例.