2013-10-29 12 views
7

Memcachier (Dalli istemci olarak) kullanarak Heroku'ya dağıtılmış bir Rails uygulamasına sahibim. Ücretsiz eklentiyi kullanıyorum (25 MB önbellek sunuyor).Memkachier önbellek sınırına ulaştığında Heroku istek zaman aşımı

Kahramandan gelen istek zaman aşımlarını almaya başladık ve hata ayıklamadan sonra, el ile temizlemenin Memcachier'in sorunu çözdüğünü öğrendik.

Memcachier 20 MB gibi (sınır 25 MB olduğunda) sınırına yakın seviyelere ulaştığında zaman aşımları oluşur.

Memcachier neden zamanla boş alanı önbelleğe almıyor? Önbellek belirli bir boyuta ulaştığında eksik yapılandırma Memcachier bildirmek için var ?

Benim conf:

application.rb

config.cache_store = :dalli_store 

production.rb

client = Dalli::Client.new 
config.action_dispatch.rack_cache = { 
    :metastore => client, 
    :entitystore => client, 
    :allow_reload => false 
} 

cevap

0

Belki senin production.rbsocket_timeout ve socket_failure_delay seçenekleri içerecek şekilde güncellemeyi deneyin.

require 'dalli' 
cache = Dalli::Client.new((ENV["MEMCACHIER_SERVERS"] || "").split(","), 
        {:username => ENV["MEMCACHIER_USERNAME"], 
        :password => ENV["MEMCACHIER_PASSWORD"], 
        :failover => true, 
        :socket_timeout => 1.5, 
        :socket_failure_delay => 0.2 
        }) 

- VEYA -

Eğer Puma kullanıyorsanız, sen connection_pool taş yüklü olması gerekir.

Gemfile

gem 'connection_pool' 

Ve production.rb bu yapılandırma

config.cache_store = :dalli_store, 
        (ENV["MEMCACHIER_SERVERS"] || "").split(","), 
        {:username => ENV["MEMCACHIER_USERNAME"], 
        :password => ENV["MEMCACHIER_PASSWORD"], 
        :failover => true, 
        :socket_timeout => 1.5, 
        :socket_failure_delay => 0.2, 
        :pool_size => 5 
        }