memcached restart 启动一个新的 memcached 并且不会杀死旧的

标签 memcached

我在同一台服务器上的不同文件夹中以生产模式和暂存模式运行我的 rails 应用程序。它们都使用需要运行 memcached 的 memcache-client。

到目前为止,我还没有设置部署脚本,因此只需通过 ssh 到服务器上手动部署,转到适当的目录,更新代码,重新启动 memcached,然后重新启动 unicorn(实际运行 rails 应用程序的进程) .我因此重新启动 memcached:

sudo /etc/init.d/memcached restart &

这会启动一个新的 memcached,但它不会杀死旧的:检查一下:
ip-<an-ip>:test.millionaire[subjects]$ ps afx | grep memcache
11176 pts/2    S+     0:00  |           \_ grep --color=auto memcache
10939 pts/3    R      8:13              \_ sudo /etc/init.d/memcached restart
 7453 ?        Sl     0:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1

ip-<an-ip>:test.millionaire[subjects]$ sudo /etc/init.d/memcached restart &
[1] 11187

ip-<an-ip>:test.millionaire[subjects]$ ps afx | grep memcache
11187 pts/2    T      0:00  |           \_ sudo /etc/init.d/memcached restart
11199 pts/2    S+     0:00  |           \_ grep --color=auto memcache
10939 pts/3    R      8:36              \_ sudo /etc/init.d/memcached restart
 7453 ?        Sl     0:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1

[1]+  Stopped                 sudo /etc/init.d/memcached restart
ip-<an-ip>:test.millionaire[subjects]$ sudo /etc/init.d/memcached restart &
[2] 11208
ip-<an-ip>:test.millionaire[subjects]$ ps afx | grep memcache
11187 pts/2    T      0:00  |           \_ sudo /etc/init.d/memcached restart
11208 pts/2    R      0:01  |           \_ sudo /etc/init.d/memcached restart
11218 pts/2    S+     0:00  |           \_ grep --color=auto memcache
10939 pts/3    R      8:42              \_ sudo /etc/init.d/memcached restart
 7453 ?        Sl     0:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1

可能导致它的原因是另一个 memcached 正在运行 - 请参阅底线。我很困惑这是从哪里来的,我的本能是杀死它,但我认为我最好与比我更了解 memcached 的人核实一下。

感谢任何建议 - 最大

编辑 - 解决方案

在与同事进行了一些侦探工作后,我发现了这一点。在 Rails 控制台中,我输入了 CACHE.stats,它会打印出值的哈希值,包括“pid”,我可以看到它被设置为 memcached 的实例,它不是通过 memcached 重启开始的,即这个过程:
7453 ?        Sl     0:00 /usr/bin/memcached -m 64 -p 11211 -u nobody -l 127.0.0.1

memcached 控制脚本(即定义启动、停止和重启命令)在 /etc/init.d/memcached 中。

在这行说
# Edit /etc/default/memcached to change this.
ENABLE_MEMCACHED=no

所以我查看了 /etc/default/memcached ,也设置为 ENABLE_MEMCACHED=no
所以,这基本上是在阻止 memcached 被停止和启动。我把它改成了 ENABLE_MEMCACHED=yes ,然后它会停止并开始正常。现在,当我停止并启动 memcached 时,就是上述过程,即使用中的 memcached,即停止并启动。

最佳答案

尝试使用:

 killall memcached

关于memcached restart 启动一个新的 memcached 并且不会杀死旧的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289124/

相关文章:

c - 对 `memcached_exist' 的 undefined reference

memcached - 有人可以解释一下memcached中的slab是什么吗

django - 无法连接 'str' 和 'tuple' 对象 - Django - johnny 缓存

Java Memcached 客户端

java - Couchbase 的 memcached 实现中 Java 和 .Net 之间的数据共享

java - 安全处理 AppEngine 中的并发 Memcache 保存

ASP.NET - 多个 Web 应用程序 - 共享缓存对象

php - 在 Symfony 中创建一个 Cache Provider 类

caching - memcached是如何更新的?

symfony1 - 将 memcache 设置为默认值,仅适用于 symfony 中的条令查询