2

我正在运行Rails 3.0.5,控制台上报告一个页面需要60ms,但是如果我查看Firefox Net 加载时间图,需要2.9 秒。如果我ab在 Bash 上运行命令,它会说需要 300 毫秒。

因此,如果删除支架 javascript(其中 6 个),则需要 1.9 秒......但我想知道为什么这么慢?保命不光荣吗?

同样奇怪的是 Firefox 显示同时下载 4 个文件——我认为 Webrick 一次只支持 1 个连接?

(改用杂种或“瘦”会使事情变得不同或更好吗?)

还奇怪的是,如果我

ab -n 10 -c 5 http://www.somesite.com:8080

它需要 3 秒,为了测试如何keep-alive支持,我使用了以下-k选项:

ab -n 10 -c 5 -k http://www.somesite.com:8080

但现在总时间从 3 秒变为 4.5 秒。不keep-alive应该让它更快,并且keep-alive由 Webrick 支持吗?

另外,如果它支持并发连接,那么如果某些代码使用类变量来处理事情,那么不会发生竞争条件吗?(因为类变量内容保留在请求中)

4

2 回答 2

5

这并不能完全回答你的问题,但我会给你一些建议,这可能会让你的问题变得无关紧要。

Webrick 不应该在生产中使用。它是用纯 ruby​​ 编写的,一次只能处理一个请求。它不能用于开发模式之外的任何东西。

对于生产,您想在像 nginx 这样的反向代理后面使用多个薄实例,或者您可以使用为您执行此操作的乘客(并且是现代大多数人使用的)。


部分回答您的问题:

之所以ab比 firefox 运行得快,是因为请求 css 和 javascript 文件是浏览器的一项功能。ab仅对来自服务器的响应时间进行基准测试,其中不包括发送任何图像、css 或 js。

rails 基准测试只有 60 毫秒的原因是因为它只测量它在 rails 堆栈中的时间。它不计算将请求发送回用户所需的时间。

因为 webrick 不是为生产而设计的,所以如果不支持 keep-alive,我不会感到惊讶。

于 2011-03-24T17:00:06.563 回答
0

如果您希望在本地的两个环境中运行相同的应用程序,只需在 databases.yml 中创建另一个条目,如下所示:

dev2:适配器:mysql2 数据库:db 用户名:name 密码:wpord!主机:mysql.myexample.com 池:5 超时:5000

然后运行rails server -e dev2 --port 3001

这对我行得通。即,在本地运行的同一个应用程序连接到本地和远程数据库。

于 2011-07-14T22:51:07.377 回答