memcached死了但是锁定了

时间:2014-03-05 19:33:19

标签: crash memcached lockfile

service memcached restart yield:
停止memcached:[失败]
启动memcached:[ok]

服务memcached状态产量:
memcached死了但是锁定了

ls / var / lock / subsys /中显示名为memcached的文件

ls / var / run /中没有显示名为memcached的pid文件 这里有另一个名为memcached的文件夹,但该文件夹中没有任何内容。

rm / var / lock / subsys / memcached摆脱了memcached锁文件

service restart memcached yeilds:
停止memcached:[失败]
启动memcached:[ok]

服务memcached状态产量:
memcached死了但是锁定了

我做错了什么?

编辑:我想补充一点,我在发布之前已经搜索了这个,我要么已经在上述帖子中列出的步骤,要么该帖子已有数年之久。

7 个答案:

答案 0 :(得分:2)

是否有另一个进程绑定到TCP / 11211?

也许您尝试以非特权用户身份启动memcached服务,但失败了:

// Prepare all threads
Thread[] threads = new Thread[System.Environment.ProcessorCount];

// Start all threads
for (int i = 0; i < System.Environment.ProcessorCount; i++)
{
   threads[i] = new Thread(() => DoWork_Threaded(i));
   threads[i].Start();
}

// Wait for completion of all threads
for (int i = 0; i < System.Environment.ProcessorCount; i++)
{
   threads[i].Join();
}

之后,$ service memcached start Starting memcached: [ OK ] touch: cannot touch ‘/var/lock/subsys/memcached’: Permission denied 错误地报告 memcached未运行:

service memcached status

但它是,并且它绑定到端口11211,为了检查这个你可以使用:

$ service memcached status
memcached dead but subsys locked

或者:

$ fuser -n tcp 11211
11211/tcp:            4439

Memcached将无法启动,因为它无法绑定到11211,因为正在运行的实例已绑定到它。不幸的是,有一些系统(我在看你,CENTOS),它可能不会在$ pgrep -l memcached 4439 memcached /var/log/messages留下任何有用的提示。这就是为什么许多先前对这个问题的答案很难解决这个问题。

你如何解决?

由于/var/log/syslog不起作用,你必须杀掉它:

service stop memcached

或者这个(其中4439是您在上一步中找到的pid):

$ pkill memcached

然后你可以使用sudo做正确的事:

$ kill 4439

答案 1 :(得分:1)

通过在终端中键入以下命令解决了这个问题:

1)su(成为root)。

2)killall -9 memcached(杀死memcached)。

3)/etc/init.d/memcached start(用手启动memcached)。

或者:3)service memcached start。

答案 2 :(得分:1)

检查/ etc / sysconfig / memcached 确保OPTIONS =&#34; -l 127.0.0.1&#34;是正确的

答案 3 :(得分:0)

从OPTION中删除-l。

例如,而不是     OPTION="-l 2.2.2.2" 尝试使用     OPTION="2.2.2.2"

这对我有用。

答案 4 :(得分:0)

要解决此问题,请以root用户身份运行以下脚本 rm /var/run/memcached/memcached.pid rm / var / lock / subsys / memcached service memcached start

答案 5 :(得分:0)

删除并重新安装memcached对我有用:

[acool@acool super-confidential-dir]$ sudo yum remove memcached
...
[acool@acool super-confidential-dir]$ sudo yum install memcached

在完成上述命令后,我得到了:

[acool@acool super-confidential-dir]$ sudo service memcached status
memcached dead but pid file exists

此时我杀了它并删除了pid文件:

[acool@acool super-confidential-dir]$ sudo killall -s 9 memcached
...
[acool@acool super-confidential-dir]$ sudo rm /var/run/memcached/memcached.pid

最后启动它并检查其状态:

[acool@acool super-confidential-dir]$ sudo service memcached start
...
[acool@acool super-confidential-dir]$ sudo service memcached status
memcached (pid  13804) is running...

然后我又开心了。

祝你好运。

答案 6 :(得分:0)

就我而言,我想通过套接字使用 memcache

OPTIONS="-t 8 -s /run/memcached/memcached.sock -a 0777 -U 0"

从另一个操作系统复制,并得到同样的问题。 然后我意识到我只是忘记了,在我的操作系统中 /run/ 不存在。而已。检查你的路径,哈哈