ruby on rails - Rails+Dalli memcache gema: DalliError: No hay servidor disponible
ruby-on-rails memcached (5)
Hola, tengo problemas para configurar mi proyecto de Rails en mi servidor porque apache sigue quejándose
DalliError: No server available
.
Instalé memcached
en mi máquina ubuntu, pero todavía no funciona. Mi proyecto de rieles también tiene config.cache_store = :dalli_store, ''localhost:11211'', { :namespace => "production" }
en los entornos / production.rb. ¿Cómo podría depurar esto?
Mi registro muestra antes de cada solicitud:
localhost:11211 failed (count: 6)
DalliError: No server available
telnet al 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
Fue porque alguien cambió el /etc/hosts
al punto 127.0.1.1
para localhost en lugar de 127.0.0.1
. Después de cambiar eso, memcached
funcionó.
La respuesta aceptada probablemente resolverá el problema para el 95% de las personas que están viendo este error, pero en mi caso, encontré que el problema es mucho más fundamental:
Desde el servidor, no pude hacer ping 127.0.0.1
. Esto significaba que Dalli
no podía conectarse al servidor de memcache
, que por defecto se ejecuta en 127.0.0.1:11211
.
Hay varias cosas que podrían causar este problema, pero lo más probable es que simplemente falte una interfaz de red. Si ejecuta ifconfig
, debería ver algo como esto en la salida:
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)
Si falta esto, asegúrese de que su /etc/network/interfaces
contenga la siguiente definición de interfaz local:
auto lo
iface lo inet loopback
Y luego reinicie el servicio de red:
sudo /etc/init.d/networking restart
Si eres un usuario de Homebrew:
brew install memcached
Compruebe si el servicio se está ejecutando:
brew services list
Si no, comience
brew services start memcached
Use 127.0.0.1
lugar de localhost
para resolver su problema (y el mío).
config.cache_store = :dalli_store, ''127.0.0.1:11211'', { namespace: ''production'' }
Yo tuve el mismo problema. Primero instalé memcached como gem gem install memcached
y obtuve el error "DalliError: No hay servidor disponible"
Luego instalé memcached haciendo sudo apt-get install memcached
. Funciona bien ahora.