我正在生产模式和登台模式下运行我的rails应用程序在同一台服务器上,位于不同的文件夹中。他们都使用memcache-client,需要运行memcached。
到目前为止,我还没有设置部署脚本,因此只需通过sshing到服务器,进入相应的目录,更新代码,重新启动memcached,然后重新启动unicorn(实际运行的进程)来手动部署rails app)。我重新启动了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的实例,而不是mem;来自memcached restart,即这个过程:
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,它已经停止并启动了。
答案 0 :(得分:8)
尝试使用:
killall memcached