相关疑难解决方法(0)

在memcached中增加项目最大大小?

我在我的centos服务器上使用memcached,我的项目很大,并且有超过1MB的对象,我需要保存到memcached,好吧,我不能!因为max_item_size是1MB,无论如何编辑它?

谢谢

memcached

11
推荐指数
2
解决办法
3万
查看次数

如何在Heroku上使用机架/缓存来缓存超过1MB的文件?

我正在使用Heroku上托管的Dragonflyrack/cache的组合.

我正在使用Dragonfly上传资产.缩略图即时处理并存储在机架/缓存中,以便从memcached(通过Memcachier插件)快速传送.

常规静态资产也通过rack/cache缓存在memcached中.

我的问题是,任何超过1MB的上传文件都会导致我的应用程序出现500错误.

2013-07-15T10:38:27.040992+00:00 app[web.1]: DalliError: Value too large, memcached can only store 1048576 bytes per key [key: d49c36d5db74ef45e957cf169a0b27b83b9e84de, size: 1502314]
2013-07-15T10:38:27.052255+00:00 app[web.1]: cache: [GET /media/BAhbBlsHOgZmSSIdNTA3Njk3ZWFiODBmNDEwMDEzMDAzNjA4BjoGRVQ/WTW_A5Flyer_HealthcareMedicalObsGynae_WEB.pdf] miss, store
2013-07-15T10:38:27.060583+00:00 app[web.1]: !! Unexpected error while processing request: undefined method `each' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

Memcache的限制为1MB,所以我可以理解为什么我的资产没有被缓存,但我宁愿它不会破坏服务资产.

我甚至不确定这个错误来自哪里.大概来自其他机架中间件之一?

增加最大文件大小似乎没有任何影响.

config.cache_store = :dalli_store, ENV["MEMCACHIER_SERVERS"].split(","), {¬
  :username        => ENV["MEMCACHIER_USERNAME"],¬
  :password        => ENV["MEMCACHIER_PASSWORD"],¬
  :value_max_bytes => 5242880 # 5MB¬
}
Run Code Online (Sandbox Code Playgroud)

从长远来看,我知道将这种资产从Heroku中移除是一个明智的举动,但这不会是一个快速的工作.

在此期间,我可以做什么来在Heroku上提供这些资产而不会出错?

memcached caching ruby-on-rails heroku dragonfly-gem

8
推荐指数
2
解决办法
2742
查看次数