我有一个Rails 4应用程序,返回大量的呈现为JSON(23Klogging/ 2.8MB文档)的数据。 在我的笔记本电脑上使用WEBrick服务器testing这个调用,请求在573ms完成。
Completed 200 OK in 573ms (Views: 0.1ms | ActiveRecord: 51.2ms)
如果我使用Phusion Passenger切换到Apache,则完全相同的请求需要3025ms才能完成。
Completed 200 OK in 3025ms (Views: 0.1ms | ActiveRecord: 53.9ms)
我不明白为什么乘客会这么慢。 有什么想法吗?
我的开发环境正在运行OS X 10.7.5。 我安装了Apache 2.2.24和Passenger 4.0.23。
我会检查出来的
http://dtrace.org/blogs/brendan/2011/10/10/top-10-dtrace-scripts-for-mac-os-x/
特别是“干预”(#5)部分。 使用-e选项查看已用时间,并查看Apache w / Phusion Passenger所进行的所有系统调用。 你会希望find的是,较慢的路线是search一堆额外的目录,或加载一堆其他库等,或做一堆奇怪的DNS调用。 正如你可能猜测的那样,Phusion Passenger在实际计算中是不太可能的。 这个差异是否与logging数量成线性关系?
对不起,这不是Apache / Phusion Passenger特定的…我不熟悉PP,但根据我的经验,由于它们是两个独立的服务器,因此从Apache到Phusion Passenger的呼叫可能会比Webrick增加更多的延迟。 关于dtruss的一个很酷的部分是,你可以在两台服务器上运行它,看看哪个(更多)负责延迟。 发布结果,如果你尝试这个工具,我很好奇。