为什么 Memcache 没有自动启动?

为什么 Memcache 没有自动启动?

我在 CentOS 服务器上安装了 memcache,以及 php 的相关库:

在此处输入图片描述

尽管我已经安装了这两个,但我最终还是使用了 Memcache

$memcache = new Memcache;

因为我想让 memcache 服务在服务器重启后自动运行,所以我这样做了:

memcached -d -u nobody -m 512 -p 11211 127.0.0.1
chkconfig memcached on

然后我检查了一下:

chkconfig --list | grep memcache
> memcached 0:off   1:off   2:on    3:on    4:on    5:on    6:off

使用几分钟后:

echo stats | nc 127.0.0.1 11211

STAT pid 30412
STAT uptime 1616
STAT time 1424280050
STAT version 1.4.15
STAT libevent 1.4.13-stable
STAT pointer_size 64
STAT rusage_user 0.053991
STAT rusage_system 0.152976
STAT curr_connections 42
STAT total_connections 144
STAT connection_structures 43
STAT reserved_fds 20
STAT cmd_get 639
STAT cmd_set 360
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 262
STAT get_misses 377
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 147954
STAT bytes_written 455620
STAT limit_maxbytes 536870912
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT bytes 138385
STAT curr_items 359
STAT total_items 360
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 1
END

几周来一切都运行良好。之后我决定检查服务状态,但不知何故,memcache 根本没有运行。我不得不重新启用它(在那几周的某个时候我确实重启过服务器):

memcached -d -u nobody -m 512 -p 11211 127.0.0.1

为什么重启后 memcache 没有自动启动?这不是它的chkconfig memcached on目的吗?它为什么会停止工作?

答案1

您应该检查尝试运行时发生了什么(日志等)

service memcached start

停止手动启动的实例后。如果这没有帮助,请检查 boot.log,下次启动系统时尽早检查日志。


> memcached 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭

Memcached 未配置为自动启动,所有运行级别均将其设置为关闭。

您应该尝试再次设置它。

答案2

为什么 Memcache 没有自动启动?

我没有“为什么”的确切答案,但我有一个针对该问题的解决方案,如下所列和所述;

步骤 1)创建一个可执行文件文件名

/usr/local/bin/memcached

并将以下内容放入该文件中;

#!/bin/sh

echo Checking for memcached instance...
result=$(pidof memcached)
echo "$result"
if [ -z "$result" ]; then
  echo memcached is not running. Attempt to start it...
  /usr/bin/memcached -u memcached -p 11211 -m 1024 -c 1024 -l localhost -d &
else
  echo memcached is already running. Do nothing.
fi

echo End of script.

步骤 2)将该脚本放入/etc/crontab

* * * * root /usr/local/bin/memcached

这就是我所做的一切。该脚本将每分钟执行一次,并检查是否有任何正在运行的 memcached 实例。

希望这有帮助。

相关内容