Tom*_*ero 7 memcached timeout ruby-on-rails heroku
我有一个使用Memcachier(Dalli作为客户端)部署到Heroku的Rails应用程序.我正在使用免费的附加组件(它提供25 MB的缓存).
我们开始接收来自heroku的请求超时,经过调试,我们发现手动刷新Memcachier解决了这个问题.
当Memcachier达到接近其限制的水平时发生超时,例如20 MB(当限制为25 MB时).
为什么Memcachier不会随着时间的推移释放缓存空间?是否有任何丢失的配置告诉Memcachier 在缓存达到一定大小时刷新?
我的conf:
application.rb中
config.cache_store = :dalli_store
Run Code Online (Sandbox Code Playgroud)
production.rb
client = Dalli::Client.new
config.action_dispatch.rack_cache = {
:metastore => client,
:entitystore => client,
:allow_reload => false
}
Run Code Online (Sandbox Code Playgroud)
也许尝试更新您的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
})
Run Code Online (Sandbox Code Playgroud)
- 或者 -
如果您使用Puma,则需要安装connection_poolgem。
宝石文件
gem 'connection_pool'
Run Code Online (Sandbox Code Playgroud)
以及你的 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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
467 次 |
| 最近记录: |