Rails + Dalli memcache gem:DalliError:没有可用的服务器

嗨,我在服务器上设置我的Rails项目时遇到了麻烦,因为apache一直在抱怨

DalliError: No server available

我在我的ubuntu机器上安装了memcached ,但它仍然无效。 我的rails项目在环境/ production.rb中也有config.cache_store = :dalli_store, 'localhost:11211', { :namespace => "production" } 。 我该如何调试?

我的日志显示在每个请求之前:

 localhost:11211 failed (count: 6) DalliError: No server available 

telnet到11211:

  root@s2:/usr/local/www/production/current/log# telnet localhost 11211 Trying 127.0.1.1... telnet: Unable to connect to remote host: Connection refused 

我有同样的问题。 首先我将memcached安装为gem gem install memcached并收到错误“DalliError:No server available”

然后我通过sudo apt-get install memcached 。 它现在工作正常。

如果您是Homebrew用户:

 brew install memcached 

检查服务是否正在运行:

 brew services list 

如果没有,请启动它:

 brew services start memcached 

这是因为有人将/etc/hosts文件更改为127.0.1.1指向localhost而不是127.0.0.1 。 更改后, memcached工作。

接受的答案可能会解决95%看到此错误的人的问题,但就我而言,我发现问题更为根本:

从服务器,我无法ping 127.0.0.1 。 这意味着Dalli无法连接到memcache服务器,默认情况下运行在127.0.0.1:11211

有许多事情可能导致这个问题,但最有可能的只是缺少网络接口。 如果你运行ifconfig ,你应该在输出中看到这样的东西:

 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:15686 errors:0 dropped:0 overruns:0 frame:0 TX packets:15686 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:23730314 (23.7 MB) TX bytes:23730314 (23.7 MB) 

如果缺少此选项,请确保/etc/network/interfaces文件包含以下本地接口定义:

 auto lo iface lo inet loopback 

然后重启网络服务:

 sudo /etc/init.d/networking restart