首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否正确地使用了ApacheBench?

我是否正确地使用了ApacheBench?
EN

Stack Overflow用户
提问于 2012-08-14 12:45:46
回答 1查看 392关注 0票数 0

在视频控制器-显示操作中,我尝试了两个场景。第一个使用increment_counter,并直接写入数据库:

代码语言:javascript
复制
Video.increment_counter(:views_count, @video.id)

第二种方法使用save方法。

代码语言:javascript
复制
@video.views_count = @video.views_count + 1
@video.save

在ApacheBench中,我这样做:

代码语言:javascript
复制
ab -n 100 -c 10 http://127.0.0.1:3000vidoes/18

视频id是18。我确保通过Video.find(18).update_attribute(:views_count, 18)在每次ab运行时重置views_count

在两种情况下运行ApacheBench后,views_count都保持在100。我本以为increment_counter会比save方法更准确,因为它直接写入数据库。

我的替补正确吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-14 13:18:20

使用这两种方法得到正确答案的原因是,您在这里并没有真正测试并行性。当apachebench发出10个并发请求时,您的rails服务器一次只处理其中一个请求。尝试执行以下操作之一,以利用第二种方案中存在的竞争条件:

  • 启动多个rails服务器,并将它们置于负载均衡器之后。您可以使用passenger,或者使用thin -s 4之类的东西,然后将所有这些服务器放在nginx或haproxy instance.
  • switch后面,使用避免GIL的线程化解决方案,比如在puma

下运行的JRuby或rubinius

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

https://stackoverflow.com/questions/11945914

复制
相关文章

相似问题

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