我正在运行Rails 3.0.5,并且在控制台上报告了一个页面需要60ms,但如果我检查Firefox Net加载时间图表,则需要2.9秒。如果我在Bash上运行ab
命令,则表示需要300毫秒。
因此,如果删除了javascripts(其中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
应该让它更快,Webrick支持keep-alive
?
另外,如果它支持并发连接,那么如果某些代码使用类变量来处理事情,那么是否会出现竞争条件? (因为类变量内容跨越请求)
答案 0 :(得分:4)
这并不完全回答你的问题,但我会给你一些可能使你的问题无关紧要的建议。
Webrick不应该用于生产。它是用纯ruby编写的,一次只能处理一个请求。它不能用于开发模式之外的任何东西。
对于制作,你想在反向代理(如nginx)后面使用多个精简实例,或者你可以使用为你做这个的乘客(这是大多数人在现代使用的)。
部分回答你的问题:
ab
运行速度比firefox快的原因是因为请求css和javascript文件是浏览器的功能。 ab
仅对服务器的响应时间进行基准测试,不包括发送任何图像,css或js。
导轨基准测试仅为60ms的原因是因为它仅测量导轨堆栈中的时间。它不计算将请求发送回用户所需的时间。
因为webrick不是为制作而制作的,所以如果不支持keep-alive,我也不会感到惊讶。
答案 1 :(得分:0)
如果您希望在本地的两个环境中运行相同的应用程序,只需在databases.yml中创建另一个条目,如下所示:
DEV2: 适配器:mysql2 数据库:db 用户名:名称 密码:wpord! 主机:mysql.myexample.com 游泳池:5 超时:5000
然后运行rails server -e dev2 --port 3001
这对我有用。也就是说,在本地运行的同一个应用程序连接到本地AND远程数据库。