当Memcachier达到缓存限制时,Heroku请求超时

我有一个使用Memcachier(Dalli作为客户端)部署到Heroku的Rails应用程序。 我正在使用免费的附加组件(它提供25 MB的缓存)。

我们开始接收来自heroku的请求超时,经过调试,我们发现手动刷新Memcachier解决了这个问题。

当Memcachier达到接近其限制的水平时发生超时,例如20 MB(当限制为25 MB时)。

为什么Memcachier不会随着时间的推移释放缓存空间? 是否有任何丢失的配置告诉Memcachier 在缓存达到一定大小时刷新

我的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 } 

也许尝试更新您的production.rb以包含socket_timeoutsocket_failure_delay选项。

 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 }) 

– 要么 –

如果您使用的是Puma ,则需要安装connection_pool gem。

的Gemfile

 gem 'connection_pool' 

并在您的production.rb中进行此配置

 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 }