Memcacheddebugging/服务器日志监视Memcached服务器?

我有基于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。