nop*_*ole 2 mongrel ruby-on-rails thin webrick
我正在运行 Rails 3.0.5,控制台上报告一个页面需要 60 毫秒,但是如果我查看 Firefox Net 加载时间图表,它需要 2.9 秒。如果我ab在 Bash 上运行命令,它说需要 300 毫秒。
因此,如果移除支架 javascripts(其中 6 个),则需要 1.9 秒……但我想知道为什么这么慢?活下去不是光荣的吗?
同样奇怪的是 Firefox 显示 4 个文件正在同时下载——我认为 Webrick 一次只支持 1 个连接?
(改为使用杂种或“瘦”会使事情变得不同或更好吗?)
还奇怪的是,如果我
ab -n 10 -c 5 http://www.somesite.com:8080
Run Code Online (Sandbox Code Playgroud)
需要 3 秒,为了测试如何keep-alive支持,我使用了以下-k选项:
ab -n 10 -c 5 -k http://www.somesite.com:8080
Run Code Online (Sandbox Code Playgroud)
但现在总时间从 3 秒变为 4.5 秒。不keep-alive应该让它更快,并且keep-alive由 Webrick 支持?
另外,如果它支持并发连接,那么如果某些代码使用类变量来处理事情,那么不会发生竞争条件吗?(因为类变量内容跨请求保持不变)
这并不能完全回答你的问题,但我会给你一些建议,可能会让你的问题变得无关紧要。
不应在生产中使用 Webrick。它是用纯 ruby 编写的,一次只能处理一个请求。它不能用于开发模式之外的任何东西。
对于生产,您希望在像 nginx 这样的反向代理后面使用多个 Thin 实例,或者您可以使用为您执行此操作的乘客(这是现代大多数人使用的)。
要部分回答您的问题:
之所以ab运行速度比firefox快,是因为请求css和javascript文件是浏览器的一个功能。ab仅对来自服务器的响应时间进行基准测试,不包括发送任何图像、css 或 js。
rails 基准测试只有 60 毫秒的原因是因为它只测量它在 rails 堆栈中的时间。它不计算将请求发送回用户所需的时间。
因为 webrick 不是为生产而设计的,所以如果不支持 keep-alive,我也不会感到惊讶。
| 归档时间: |
|
| 查看次数: |
1685 次 |
| 最近记录: |