Rails + Dalli memcache gem: DalliError: нет доступных серверов

Привет, У меня возникли проблемы с настройкой моего проекта 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

telnet to 11211:

    [email protected]:/usr/local/www/production/current/log# telnet localhost 11211
    Trying 127.0.1.1...
    telnet: Unable to connect to remote host: Connection refused

Ответы

Ответ 1

У меня была та же проблема. Сначала я установил memcached как драгоценный камень gem install memcached и получил ошибку "DalliError: сервер недоступен"

Затем я установил memcached, выполнив sudo apt-get install memcached. Теперь он отлично работает.

Ответ 2

Если вы являетесь пользователем Homebrew:

brew install memcached

Проверьте, запущена ли служба:

brew services list

Если нет, запустите его:

brew services start memcached

Ответ 3

Это произошло потому, что кто-то изменил файл /etc/hosts на точку 127.0.1.1 на localhost вместо 127.0.0.1. После этого, memcached работал.

Ответ 4

Принятый ответ, вероятно, решит проблему для 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

Ответ 5

Использование 127.0.0.1 вместо localhost должно решить вашу (и мою) проблему.

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

Ответ 6

В моем случае я недавно обновил memcached на сервере, но демон Ruby продолжал выполнять обновление. После простого перезапуска демона Ruby ошибки исчезли. (Я также перезапустил mechached.)