当前位置:  开发笔记 > 编程语言 > 正文

为什么我的sinatra网站这么慢?

如何解决《为什么我的sinatra网站这么慢?》经验,为你挑选了2个好方法。

在提出这个问题后,我开始使用Sinatra作为服务网页的方式.

今天晚上,我和我的一个朋友开始测试服务器的速度.

要登录的文件如下所示:

require 'rubygems'
require 'sinatra'
require 'haml'

enable :sessions #for cookies!

get '/' do 
  haml :index 
end

而index.haml看起来像:

%title
  First Page

%header 
  %h2 First Page

他和我一样坐在最近的笔记本电脑上,我们两人之间有一台Apple 802.11n路由器.我们都在运行Windows 7.我还在运行Ubuntu 9.10 x64的笔记本电脑上尝试了这些相同的文件,其中包含Sinatra和从apt-get安装的所有相关文件.

无论是服务器操作系统,Windows还是Linux,Sinatra都需要7秒钟来提供单页请求.我看到作者设法在这里处理了400多个请求/秒.是什么赋予了?(或者应该在SuperUser等上?)



1> dbrown0708..:

我会就何时优化您的Web应用程序留下任何意见.

在您的Sinatra应用程序中设置不同的配置以进行开发和生产,因为其中一些建议,您并不总是想要使用.实际上,您应该继续进行设置和环境,类似于在生产中部署的方式.您不会通过简单的运行来部署ruby app.rb.你想把apache或nginx放在你的Mongrel面前.Mongrel将提供您的静态文件,但这确实只适用于开发模式.在部署中,Web服务器将为此做得更好.简而言之,您部署的环境将比独立开发环境更快.

在这一点上,我不会担心Mongrel与Thin.如果Thin是快两倍 - 它不是 - 那么你的7秒变为3.5.那会不够好?

有些事要尝试......

我知道我刚刚告诉你要设置一个部署环境,但也许它不是服务器端.您是否尝试在网页上运行YSlow或PageSpeed?I/O将占用7秒钟(免责声明:我假设您的网络设置没有任何问题),而不是服务器.YSlow - 实际上是Firebug - 会告诉你页面的每个部分到达浏览器需要多长时间.

YSlow告诉我要做的事情之一就是在我的静态资产上放置一个远远的Expires标题,我知道但是我要离开优化直到结束.那时我意识到至少有3个不同的地方我可以指定那个标题.我说服自己在nginx中这样做是正确的选择.

如果您对这些结果感到满意,那么您可以查看服务器.脱离我的头顶,所以并非详尽无遗

    打开gzip响应.

    结合您的样式表,每页只有一个请求.如果您不手动执行此操作,可能会有一些机架中间件.

    缓存.我正在尝试Rack :: Cache.

    使用精灵来减少您使用的图像下载次数.

    缩小您的Javascript.也许,通过Rack Middleware.

机架中间件很整洁,但它使用CPU.因此,手动缩小Javascript会为您的工作流程增加新的一步,但在服务器上,它比Middleware更快.这是一个权衡.

对不起,如果这是rambly.


"我会就你何时应该优化你的网络应用程序留下任何意见." - pffft,他获得了0.14请求/秒的琐碎实施,当然他现在应该调查它.
我选择这个作为答案纯粹是因为一旦我越过Hello World,它就会导致学习很多优化.在这种情况下,修复是在webrick中进行调试.

2> 小智..:

我在使用霰弹枪运行Sinatra时出现此问题,但在直接运行我的应用程序时却没有(即ruby -rubygems app.rb).这是因为猎枪会为每个请求分叉并重新加载应用程序.

我在Sinatra的邮件列表中找到了一个讨论这个问题的帖子,那里的人建议使用重新运行而不是霰弹枪.我很高兴地说它为我解决了这个问题.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有