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