web-dev-qa-db-ja.com

Rails + Dalli memcache gem:DalliError:サーバーがありません

こんにちは、Apacheが文句を言うので、私のサーバーにRailsプロジェクトを設定するのに問題があります。

DalliError: No server available

Ubuntuマシンにmemcachedをインストールしましたが、それでも機能しません。私のRailsプロジェクトにはconfig.cache_store = :dalli_store, 'localhost:11211', { :namespace => "production" }は、environments/production.rbにあります。これをどのようにデバッグしますか?

私のログは各リクエストの前に表示されます:

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

11211へのtelnet:

    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
19
bigpotato

私も同じ問題を抱えていました。最初にmemcachedをgem gem install memcachedとしてインストールし、「DalliError:No server available」というエラーを受け取りました

次に、Sudo apt-get install memcachedを実行してmemcachedをインストールしました。現在は正常に動作しています。

26
Sagar A

Homebrewユーザーの場合:

brew install memcached

サービスが実行されているかどうかを確認します。

brew services list

そうでない場合は、起動します。

brew services start memcached
8
Bryan Ash

これは、誰かが/etc/hostsファイルを変更して、127.0.1.1ではなく127.0.0.1がlocalhostを指すようにしたためです。それを変更した後、memcachedは機能しました。

3
bigpotato

受け入れられた回答はおそらくこのエラーが表示されている95%の人の問題を解決しますが、私の場合、問題ははるかに根本的であることがわかりました。

サーバーから、ping 127.0.0.1を実行できませんでした。これは、Dallimemcacheサーバーに接続できなかったことを意味し、デフォルトでは127.0.0.1:11211で実行されます。

couldがこの問題を引き起こす原因はいくつかありますが、最も可能性が高いのは、単にネットワークインターフェイスが見つからないことです。 ifconfigを実行すると、shouldのように出力されます。

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
1
Tom Lord

使用する 127.0.0.1の代わりにlocalhostを使用すると、問題が解決します。

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

私の場合、私は最近サーバーのmemcachedを更新しましたが、Rubyデーモンはアップグレードを実行し続けていました。単にRubyデーモンを再起動した後、エラーはなくなりました(mechachedも再起動しました)。

0
Pistos