我的配置环境为:
Linux版本:CentOS 5.6
PHP版本:PHP 5.2.17
Memcached版本:1.4.9
Memcache版本:2.2.6
Memcached需要libevent支持,所以需要先检查libevent是否已经安装。
下面是Memcached的安装过程:
# tar zvxf memcached-1.4.9.tar.gz
# cd memcached-1.4.9
# ./configure --prefix=/usr/local/memcached
# make
# make install
启动Memcached:
# /usr/local/memcached/bin/memcached -d -m 128 -l 127.0.0.1 -p 11211 -u root
参数128指定了内存使用量
接下来是为PHP安装memcache扩展:
# gzip -d memcache-2.2.6.tgz
# tar xvf memcache-2.2.6.tar
# cd memcache-2.2.6
# /usr/local/php/bin/phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
# make
# make install
最后将如下配置信息添加到php.ini文件中:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension=memcache.so
备注:/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/这个路径可能会有不同,以您机器中的为准。
管理Memcached的Service脚本
如Memcached已在Linux中安装完毕,且被部署到/usr/local/memcached这个路径下,接下来我们来开始为其安装用于启动和停止的服务管理脚本。
首先,通过vi在/etc/rc.d/init.d路径下新建一个名为memcached的脚本文件,命令如下:
vi /etc/rc.d/init.d/memcached
然后,向其中写入Shell脚本如下:
#!/bin/sh
#
# chkconfig: 2345 90 50
# description: Memcached Service Daemon
#
# processname: Memcached
#
# Source function library.
. /etc/rc.d/init.d/functions
. /etc/sysconfig/network
#[ ${NETWORKING} = "no" ] && exit 0
#[ -r /etc/sysconfig/dund ] || exit 0
#. /etc/sysconfig/dund
#[ -z "$DUNDARGS" ] && exit 0
MEMCACHED="/usr/local/memcached/bin/memcached"
start()
{
echo -n $"Starting Memcached: "
daemon $MEMCACHED -u daemon -d -m 32 -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid
echo
}
stop()
{
echo -n $"Shutting down Memcached: "
killproc memcached
echo
}
[ -f $MEMCACHED ] || exit 1
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 3
start
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
保存退出vi后,执行下面的命令来安装这个脚本
chmod 777 /etc/rc.d/init.d/memcached
chkconfig --add memcached
chkconfig --level 235 memcached on
然后可以通过下面的命令来检查是否安装成功
hkconfig --list | grep memcached
service memcached start
service memcached stop
service memcached restart
Memcached连接超时故障排除
在一次例行检查日志的时候,发现Nginx日志中出现了大量的PHP连接Memcached超时的报错信息,如下:
PHP Warning: Memcache::connect(): Can't connect to 127.0.0.1:11211, Connection timed out (110) in ...
连上服务器检查Memcached进程运行正常,然后我用一段测试代码检查Memcached是否能够正常连接,结果也很正常。
于是又仔细分析日志,发现那段报错信息是间隔出现的,说明是有一定几率的。这时我回想起上周因为架构问题刚刚把PHP的Session存储路径指向到了Memcached里,可能是因为这个配置增加了Memcached的负载,从而导致在并发量较高时,Memcached出现连接超时的现象。
找到原因就容易解决了。重新调整Memcached的启动参数,增加-c参数来提高连接数量。默认为1024,可以逐步增加以找到最佳数值。我设置为2048。
启动命令为:
memcached -d -m 256 -c 2048 -l 127.0.0.1 -p 11211 -u root
如果服务器充裕,可以考虑分布式的memcached集群,以降低单个节点上的压力
荒野乱斗国际版 (BrawlStars)最新版本v56.274
下载一波超人内置修改器菜单版 安卓版v1.0.2
下载敢达决战官方正版 安卓版v6.7.9
下载敢达决战 安卓版v6.7.9
下载继承了一座戏园子无限声望铜钱版 内置菜单最新版v1.7
继承了一座戏园子折相思版是游戏的破解版本,在该版本中为玩家提
山河半世橙光清软金手指版 无限鲜花v3.24
山河半世是一款超级好玩的橙光恋爱游戏,在游戏中玩家们需要扮演
蓬莱手游折相思版 安卓版v1.0.0
蓬莱免广告版是游戏的修改版本,在该版本中为玩家去除了广告,玩
当红影后橙光游戏破解版2025 最新版v1.0
当红影后橙光破解版是一款超级好玩的娱乐圈题材的橙光游戏,在这
忽然成了万人迷清软完结版 无限鲜花版v12.15
忽然成了万人迷破解版是一款非常好玩的男性向橙光游戏,在有一天