23

嗨,我在服务器上设置 Rails 项目时遇到问题,因为 apache 一直在抱怨

DalliError: No server available.

我安装memcached在我的 ubuntu 机器上,但它仍然无法正常工作。我的 rails 项目也在config.cache_store = :dalli_store, 'localhost:11211', { :namespace => "production" }环境/production.rb 中。我将如何调试这个?

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

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

远程登录到 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
4

6 回答 6

31

我有同样的问题。首先,我将 memcached 作为 gem 安装 gem install memcached 并收到错误“DalliError:没有可用的服务器”

然后我安装了 memcached sudo apt-get install memcached。它现在工作正常。

于 2013-09-02T18:41:33.470 回答
13

如果您是 Homebrew 用户:

brew install memcached

检查服务是否正在运行:

brew services list

如果没有,请启动它:

brew services start memcached
于 2017-10-27T16:24:21.303 回答
3

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

于 2013-09-10T16:07:21.497 回答
2

使用127.0.0.1而不是localhost应该解决您(和我的)问题。

config.cache_store = :dalli_store, '127.0.0.1:11211', { namespace: 'production' }

于 2018-12-24T08:38:00.453 回答
1

接受的答案可能会解决 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
于 2017-01-30T14:28:59.443 回答
0

就我而言,我最近更新了服务器上的 memcached,但 Ruby 守护程序在升级过程中一直在运行。简单地重新启动 Ruby 守护程序后,错误就消失了。(我也重新启动了机械化。)

于 2019-06-10T20:55:15.800 回答