こんにちは、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
私も同じ問題を抱えていました。最初にmemcachedをgem gem install memcached
としてインストールし、「DalliError:No server available」というエラーを受け取りました
次に、Sudo apt-get install memcached
を実行してmemcachedをインストールしました。現在は正常に動作しています。
Homebrewユーザーの場合:
brew install memcached
サービスが実行されているかどうかを確認します。
brew services list
そうでない場合は、起動します。
brew services start memcached
これは、誰かが/etc/hosts
ファイルを変更して、127.0.1.1
ではなく127.0.0.1
がlocalhostを指すようにしたためです。それを変更した後、memcached
は機能しました。
受け入れられた回答はおそらくこのエラーが表示されている95%の人の問題を解決しますが、私の場合、問題ははるかに根本的であることがわかりました。
サーバーから、ping 127.0.0.1
を実行できませんでした。これは、Dalli
がmemcache
サーバーに接続できなかったことを意味し、デフォルトでは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
使用する 127.0.0.1
の代わりにlocalhost
を使用すると、問題が解決します。
config.cache_store = :dalli_store, '127.0.0.1:11211', { namespace: 'production' }
私の場合、私は最近サーバーのmemcachedを更新しましたが、Rubyデーモンはアップグレードを実行し続けていました。単にRubyデーモンを再起動した後、エラーはなくなりました(mechachedも再起動しました)。