crash - memcached 已死,但子系统已锁定

标签 crash memcached lockfile

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/

相关文章:

mysql - libmemcached 存储 mysql 结果

renv 0.12.0 是从项目库加载的,但 renv 0.11.0 记录在锁定文件中

php - PHP 中的锁文件

bash - 确保一次只运行一个 shell 脚本实例的快捷方式

c# - Unity Hololens 崩溃

ios - MKMapView init 在包含 Google Maps SDK 的应用程序中失败

python - App Engine memcache/ndb.get_multi 的性能问题

c++ - OpenCV 的 Brute Force Matcher 在第二次迭代时崩溃

c - ,C, 尝试删除列表中的最后一个元素时崩溃

java - 多线程访问Memcached