Rails应用程序抱怨无法连接到memcached,但我很确定它正在运行

一切都很好,然后我重新启动服务器。

马上:

$ ps aux | grep memcache 1000 27168 0.0 0.0 121972 1056 pts/0 Sl 15:18 0:00 memcached -m 64 -p 11211 -u nobody -l 127.0.0.1 1000 27816 0.0 0.0 7628 956 pts/0 S+ 15:36 0:00 grep memcache 

同时rails应用的日志越来越多:

 MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011) MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011) MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011) MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:55 -0600 2011) MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011) MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011) MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011) MemCacheError (No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011)): No connection to server (localhost:11211 DEAD (Timeout::Error: execution expired), will retry at Tue Feb 15 15:35:56 -0600 2011) 

因为我更像是一个开发人员而不是服务器人,而且我们并没有真正的“服务器人”,而这正在生产中……我从哪里开始呢?

 netstat -tupln | grep -i memcache 

这将告诉你,如果你的memcache实例正在侦听,并在什么端口。 我会检查在/ etc /主机localhost定义。 这应该是默认情况下,但如果有人已经在第六Vi快乐,你可以得到真正的问题。 你的PS输出显示以-l 127.0.0.1开始的memcache,但是你的脚本连接到'localhost' – 这个定义是一样的,但是它是任意的,你可以删除localhost行,或者重新别名eth0上的IP。

memcache是​​一个纯文本协议,所以请尝试telnet到端口

 telnet 127.0.0.1 11211 

你应该得到相同的回应

 telnet localhost 11211 

我们有这个问题,一旦我们交换了memcache客户端就解决了

https://github.com/mperham/dalli

(没有太多的工作要改变)