Rails + Dalli memcache gem: DalliError: No server available

匿名 (未验证) 提交于 2019-12-03 08:35:02

问题:

Hi I'm having trouble setting up my Rails project on my server because apache keeps complaining

DalliError: No server available.

I installed memcached on my ubuntu machine, but it still doesn't work. My rails project also has config.cache_store = :dalli_store, 'localhost:11211', { :namespace => "production" } in environments/production.rb. How would I debug this?

My log shows before each request:

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

telnet to 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 

回答1:

I had the same problem. First I installed memcached as a gem gem install memcached and got the error "DalliError: No server available"

Then I installed memcached by doing sudo apt-get install memcached. It works fine now.



回答2:

If you're a Homebrew user:

brew install memcached 

Check if the service is running:

brew services list 

If not, start it:

brew services start memcached 


回答3:

It was because someone changed the /etc/hosts file to point 127.0.1.1 to localhost instead of 127.0.0.1. After changing that, memcached worked.



回答4:

The accepted answer will probably solve the issue for 95% of people who are seeing this error, but in my case I found the issue to be far more fundamental:

From the server, I was unable to ping 127.0.0.1. This meant Dalli could not connect to the memcache server, which by default runs on 127.0.0.1:11211.

There are a number of things that could cause this issue, but the most likely is simply a missing network interface. If you run ifconfig, you should see something like this in the output:

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) 

If this is missing, ensure your /etc/network/interfaces file contains the following local interface definition:

auto lo iface lo inet loopback 

And then restart the networking service:

sudo /etc/init.d/networking restart 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!