memcached 无法正确重启 start-stop-daemon:警告:无法终止 8175:没有这样的进程

memcached 无法正确重启 start-stop-daemon:警告:无法终止 8175:没有这样的进程

我在使用 memcached 时遇到了一些非常奇怪和烦人的问题。我在 linode 实例上运行 ubuntu server 10.04lts。我在 django 项目中使用 fabric,fabric 脚本的一部分允许重新启动 memcached 进程。今天我注意到 fabric 输出了一个错误,内容如下

Restarting memcached: start-stop-daemon: warning: failed to kill 8175: No such process

然后我立即通过 ssh 连接到该盒子,开始四处查看,看看这是否只是一次性问题,还是某种与结构有关的问题。因此我直接在盒子上运行命令

Restarting memcached: start-stop-daemon: warning: failed to kill 8186: No such process

相同的交易不同的进程 ID。然后我尝试 telnet 到 memcached,它工作正常。进程 ID 现在是 8123。快速 ps aux | grep memcached 命令显示该进程正在该 pid 下运行。

www-data  7259  0.0  0.1  45972   772 ?        Ssl  16:38   0:00 memcached -d -u www-data -p 11211 -m 64
www-data  8123  0.0  2.4  57220 12260 ?        Ssl  17:02   0:00 memcached -d -u www-data -p 11211 -m 64

所以我想也许在通过 apt 安装 memcached 时发生了一些我之前没有注意到的事情,所以我删除了 memcached 并重新安装,没有任何错误。然后我使用以下选项运行了 memcached

sudo memcached -d -u www-data -p 11211 -m 64

真正奇怪的是,如果我停止 memcached 并重新启动它,我可以运行 /etc/init.d/memcached restart 一次而没有任何错误,之后关于未找到 pid 的相同警告会再次发生。

我现在已经束手无策了,请帮忙 :/!!

答案1

强制终止正在运行的进程,

sudo kill -9 {进程ID}

确保没有任何东西正在运行,如果 /var/run/memcached.pid 存在,也请 rm :p

然后尝试 sudo /etc/init.d/memcached start

检查 /var/run/memcached.pid 中的进程 ID 是否与 ps aux | grep memcache 中的进程 ID 匹配。如果匹配,则运行 sudo /etc/init.d/memcachd {start/stop/restart} 应该没问题

一个新贵脚本也很酷:)

克里斯

答案2

既然您正在使用 Lucid,您是否考虑过在 Upstart 中设置 memcached?

类似这样的事情应该可以工作:

$ cat /etc/init/memcached.conf
# memcached - in-memory cache
#
description "memcached"

start on (local-filesystems and started networking)
stop on runlevel [!2345]

respawn

pre-start script
  test -x /usr/bin/memcached || { stop; exit 0; }
end script

exec /usr/bin/memcached -d -u www-data -p 11211 -m 64 

在这种情况下,Upstart 将负责保持 memcached 处于活动状态。

答案3

这实际上已被报告为此处的错误:

https://bugs.launchpad.net/ubuntu/+source/memcached/+bug/795673

我刚刚在 Ubuntu 开发版中修复了这个问题(目前很精确)。修复很小,如果时间允许,应该也可以移植到 10.04。

相关内容