我有基于Memcachedvariables的聊天引擎,把它们放到数组中,并通过jQuery来读取它们,
它工作正常95%的时间,但是当服务器负载是高memcached(假定它的memcached)崩溃和浏览器得到扼杀。
我不认为它的jQuery问题,因为这只发生在服务器负载非常高。
我需要一种方法来监视memcached服务器或以某种方式写入一个日志文件到失败/错误的地方…
任何想法,我怎么能做到这一点? 或任何想法为什么memcached服务器失败? 我运行memcached如下
$GLOBALS['MemCached'] = FALSE; $GLOBALS['MemCached'] = new Memcache; $GLOBALS['MemCached']->pconnect('localhost', 11211);
我的memcachedconfiguration如下
#! /bin/sh # # chkconfig: - 55 45 # description: The memcached daemon is a network memory cache service. # processname: memcached # config: /etc/sysconfig/memcached # pidfile: /var/run/memcached/memcached.pid # Standard LSB functions #. /lib/lsb/init-functions # Source function library. . /etc/init.d/functions PORT=11211 USER=memcached MAXCONN=1024 CACHESIZE=128 OPTIONS="" if [ -f /etc/sysconfig/memcached ];then . /etc/sysconfig/memcached fi # Check that networking is up. . /etc/sysconfig/network if [ "$NETWORKING" = "no" ] then exit 0 fi RETVAL=0 prog="memcached" pidfile=${PIDFILE-/var/run/memcached/memcached.pid} lockfile=${LOCKFILE-/var/lock/subsys/memcached} start () { echo -n $"Starting $prog: " # Ensure that /var/run/memcached has proper permissions if [ "`stat -c %U /var/run/memcached`" != "$USER" ]; then chown $USER /var/run/memcached fi daemon --pidfile ${pidfile} memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P ${pidfile} $OPTIONS RETVAL=$? echo [ $RETVAL -eq 0 ] && touch ${lockfile} } stop () { echo -n $"Stopping $prog: " killproc -p ${pidfile} /usr/bin/memcached RETVAL=$? echo if [ $RETVAL -eq 0 ] ; then rm -f ${lockfile} ${pidfile} fi } restart () { stop start } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status -p ${pidfile} memcached RETVAL=$? ;; restart|reload|force-reload) restart ;; condrestart|try-restart) [ -f ${lockfile} ] && restart || : ;; *) echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart}" RETVAL=2 ;; esac exit $RETVAL
首先,你不显示memcachedconfiguration,你正在显示启动脚本。 您需要查找名称为/etc/memcached.conf的文件。 要启用日志logging,您需要取消注释该行
logfile /var/log/memcached.log
另外,可以通过启用-v或-vv选项来增加详细程度。
如果memcached崩溃,可以查看系统日志/var/log/messages和/var/log/syslog来检查可能的错误情况。
在/etc/sysconfig/memcached定义一个额外的variables:
PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="64" LOGFILE="/var/log/memcached.log" OPTIONS=""
在init脚本中编辑start()函数如下:
start () { #echo -n $"Starting $prog: " # insure that /var/run/memcached has proper permissions if [ "`stat -c %U /var/run/memcached`" != "$USER" ]; then chown $USER /var/run/memcached fi #daemon --pidfile /var/run/memcached/memcached.pid memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS -vv > $LOGFILE 2>&1 $prog -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS -vv > $LOGFILE 2>&1 RETVAL=$? #echo [ $RETVAL -eq 0 ] && action $"Starting $prog: " /bin/true && touch /var/lock/subsys/memcached }
然后重新启动memcached,你会在/var/log/memcached.log看到类似这样的内容:
slab class 40: chunk size 616944 perslab 1 slab class 41: chunk size 771184 perslab 1 slab class 42: chunk size 1048576 perslab 1 <26 server listening (auto-negotiate) <27 server listening (auto-negotiate) <28 send buffer was 129024, now 268435456 <29 send buffer was 129024, now 268435456 <28 server listening (udp) <29 server listening (udp)
不要忘记configurationlogrotate。