首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rack::Cache性能差

Rack::Cache性能差
EN

Stack Overflow用户
提问于 2012-04-01 18:45:47
回答 1查看 691关注 0票数 1

我已经将Rack::Cache设置为我的堆栈中最顶层(最后)的中间件。我的应用程序托管在heroku雪松上,所以Rack::Cache也负责静态资产。

它由heroku memcached产品支持,配置如下:

代码语言:javascript
复制
config.action_dispatch.rack_cache = {
  :metastore    => Dalli::Client.new,
  :entitystore  => 'file:tmp/cache/rack/body',
  :allow_reload => false
}
config.static_cache_control = "public, max-age=2592000"

它的速度很慢。

我正在使用ab测试图像文件的性能。

ab -n100 -c10 https://example.com/foo.jpg

在我的日志中,所有的请求都是缓存命中(“新鲜”)。但是性能很差,只有大约6个请求/秒。我知道Rack::Cache不会像一个专用的http代理那样执行得那么好,但我当然期望比这更高的吞吐量。

更新我不知道我以前怎么没想过这个问题,但是我的基准确实正在使我的互联网连接变得最大。如果我用robots.txt (而不是jpg )做同样的测试,我会得到20个请求/秒(并且仍然是最大的下游请求)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-02 01:30:26

我注意到您的帖子中的URL是HTTPS。我在基于主机名的SSL雪松堆栈上遇到了一个问题,在这个问题上,某些请求(包括静态资产和其他请求)将经历很高的延迟,尽管日志上说队列时间为0ms,服务时间为5-10 0ms。以下是Heroku的支持响应(他没有提到清漆不缓存来自雪松应用程序的资源,尽管它在运行基于主机名的SSL时存在于堆栈中):

我们还不完全确定是什么导致了这一切,但我们怀疑应该归咎于瓦尼什。通常,与雪松堆栈,清漆是不存在的。但是,当使用外接程序时,Varnish将被添加回响应过程中。没有必要同时使用Rack::Cache和Varnish。

我建议把这幅画上的清漆去掉看看是否有帮助。这样做的方法是将SSL移动到新的SSL外接程序SSL终结点。soon在技术上仍然处于测试阶段,但它很快就会面世,它的成本将与same相同。这是Heroku上SSL的未来,在各个方面都会更好。

http://devcenter.heroku.com/articles/ssl-endpoint-beta2

用户: beta通行证:****

移动的缺点是,您必须更新DNS,但一旦完成,Varnish将脱离现实,我们将能够更好地了解它是否是问题所在。

我们还考虑了您当前的SSL端点Amazon很糟糕,需要替换的可能性。但如果是这样的话,许多请求将是缓慢或失败的,而不仅仅是一个随机的慢请求。换掉当前的ELB也将涉及DNS更改。移动到新的swapping插件将使这种情况在未来变得更容易--如果交换ELB是必要的,则不需要进行DNS更改。

就目前而言,我认为迁移到SSL端点将是最好的。

当然,我看到的潜伏期有时会上升到30-60秒的范围,这显然比你看到的要差一些。当我在我的一些(HTTPS)雪松应用程序上对静态资产运行相同的apache命令时,我没有做得更好(10-15 req/s)。当我将并发性提高到50或100时,RPS高达30。然而,在清漆正面的竹HTTPS应用程序上,我可以获得超过50 req/s的静态资产。如果我的计算机能够处理更高的并发性,我怀疑它会更高。我的互联网连接是高延迟的,因为它是在蜂窝网络上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9967181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档