加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 当Memcachier达到缓存限制时,Heroku请求超时

发布时间:2020-12-17 04:32:54 所属栏目:百科 来源:网络整理
导读:我有一个使用Memcachier(Dalli作为客户端)部署到Heroku的Rails应用程序.我正在使用免费的附加组件(它提供25 MB的缓存). 我们开始接收来自heroku的请求超时,经过调试,我们发现手动刷新Memcachier解决了这个问题. 当Memcachier达到接近其限制的水平时发生超时,
我有一个使用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_timeout和socket_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(",:socket_failure_delay => 0.2,:pool_size => 5
                    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读