web-dev-qa-db-fra.com

Rails + Dalli memcache gem: DalliError: Aucun serveur disponible

Bonjour, je ne parviens pas à configurer mon projet Rails sur mon serveur car Apache n'arrête pas de se plaindre

DalliError: No server available

J'ai installé memcached sur ma machine Ubuntu, mais cela ne fonctionne toujours pas. Le projet My Rails a également config.cache_store = :dalli_store, 'localhost:11211', { :namespace => "production" } dans environnements/production.rb. Comment pourrais-je déboguer ceci?

Mon journal montre avant chaque demande:

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

telnet au 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
18
Edmund

J'ai eu le même problème. J'ai d'abord installé memcached en tant que gem gem install memcached Et j'ai reçu l'erreur "DalliError: No server available"

Ensuite, j'ai installé memcached en faisant Sudo apt-get install memcached. Cela fonctionne bien maintenant.

25
Sagar A

Si vous êtes un utilisateur Homebrew:

brew install memcached

Vérifiez si le service est en cours d'exécution:

brew services list

Sinon, lancez-le:

brew services start memcached
8
Bryan Ash

C'est parce que quelqu'un a modifié le fichier /etc/hosts pour qu'il pointe 127.0.1.1 sur localhost au lieu de 127.0.0.1. Après avoir changé cela, memcached fonctionnait.

3
Edmund

Utilisez 127.0.0.1 au lieu de localhost devrait résoudre votre problème (et le mien).

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

La réponse acceptée résoudra probablement le problème pour 95% des personnes qui constatent cette erreur, mais dans mon cas, j’ai trouvé le problème beaucoup plus fondamental:

Sur le serveur, je n'ai pas pu ping 127.0.0.1. Cela signifiait que Dalli ne pouvait pas se connecter au serveur memcache, qui s'exécute par défaut sur 127.0.0.1:11211.

Il y a un certain nombre de choses que pourrait causer ce problème, mais le plus probable est simplement une interface réseau manquante. Si vous exécutez ifconfig, vous devriez voyez quelque chose comme ceci dans le résultat:

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 cela manque, assurez-vous que votre fichier /etc/network/interfaces contient la définition d'interface locale suivante:

auto lo
iface lo inet loopback

Et puis redémarrez le service de réseau:

Sudo /etc/init.d/networking restart
0
Tom Lord