service memcached restart 产生:
停止 memcached:[失败]
启动 memcached:[确定]
服务 memcached 状态产生:
memcached 已死,但子系统已锁定
ls inside/var/lock/subsys/显示了一个名为 memcached 的文件
ls inside/var/run/显示没有名为 memcached 的 pid 文件
这里还有另一个名为 memcached 的文件夹,但该文件夹中没有任何内容。
rm/var/lock/subsys/memcached 摆脱 memcached 锁定文件
服务重启 memcached 的结果:
停止 memcached:[失败]
启动 memcached:[确定]
服务 memcached 状态产生:
memcached 已死,但子系统已锁定
我究竟做错了什么?
编辑:我想补充一点,我在发布之前已经搜索过这个,我要么已经在执行上述帖子中列出的步骤,要么该帖子已有多年历史。
最佳答案
是否有另一个进程绑定(bind)到 TCP/11211?
也许您尝试以非特权用户身份启动 memcached 服务,但它失败了:
$ service memcached start
Starting memcached: [ OK ]
touch: cannot touch ‘/var/lock/subsys/memcached’: Permission denied
之后,
service memcached status
将虚报那个 memcached 没有运行:$ service memcached status
memcached dead but subsys locked
但它是,并且它绑定(bind)到端口 11211,为了检查这一点,您可以使用:
$ fuser -n tcp 11211
11211/tcp: 4439
或者:
$ pgrep -l memcached
4439 memcached
Memcached 将无法启动,因为它无法绑定(bind)到 11211,因为正在运行的实例已经绑定(bind)到它。不幸的是,有些系统(我在看你,CENTOS)可能不会在
/var/log/messages
留下任何有用的提示。或 /var/log/syslog
.这就是为什么之前对这个问题的许多摆弄绑定(bind)地址的答案看起来就像他们解决了这个问题。你如何解决它?
由于
service stop memcached
行不通,你必须杀死它:$ pkill memcached
或者这个(其中 4439 是您在上一步中找到的 pid):
$ kill 4439
然后你可以正确地使用 sudo:
$ sudo service memcached start
Starting memcached: [ OK ]
$ service memcached status
memcached (pid 6643) is running...
关于crash - memcached 已死,但子系统已锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22207420/