Webrick和Thin在Windows中提供静态文件的速度非常慢。我怎样才能加快速度?

Webrick和Thin在Windows中提供静态文件的速度非常慢。我怎样才能加快速度?,windows,ruby-on-rails-3,performance,thin,webrick,Windows,Ruby On Rails 3,Performance,Thin,Webrick,我目前正在开发一个web应用程序,为此我在Windows和Mac开发机器之间交替使用 我的问题是,页面在Windows上的渲染速度非常慢,但不是我的Ruby代码运行缓慢,而是静态文件的处理速度很慢 一个典型的页面在dev中呈现和服务大约需要200毫秒(Mac和Windows在这里都是类似的),但它包含大约50个静态文件(在生产环境中,一旦它们被缩小和合并,只需要5到10个,但在dev中它们仍然是分开的) 这50个文件在Mac上运行大约需要1.5秒,但在Windows上大约需要10秒。这使得测试东

我目前正在开发一个web应用程序,为此我在Windows和Mac开发机器之间交替使用

我的问题是,页面在Windows上的渲染速度非常慢,但不是我的Ruby代码运行缓慢,而是静态文件的处理速度很慢

一个典型的页面在dev中呈现和服务大约需要200毫秒(Mac和Windows在这里都是类似的),但它包含大约50个静态文件(在生产环境中,一旦它们被缩小和合并,只需要5到10个,但在dev中它们仍然是分开的)

这50个文件在Mac上运行大约需要1.5秒,但在Windows上大约需要10秒。这使得测试东西变得很曲折

我试过Webrick和Thin,它们差不多

有人发现这个问题并知道如何改进吗

我已经尝试将Webrick conf更改为:DoNotReverseLookup=>true”,如中所建议,但没有任何帮助

任何帮助都将不胜感激
谢谢

Daniel

在VirtualBox中使用Ubuntu虚拟机,它可能比mac和windows更接近您的部署环境,这意味着生产中“但它在开发中起作用”的麻烦更少

此外,您还可以节省大量时间来处理不同ruby/gems实现的怪癖以及本机扩展带来的各种程度的头痛

你可以:

  • 设置内部网络,以便您可以使用windows下的浏览器浏览VM内运行的应用程序
  • 使用putty之类的工具打开到VM的控制台会话
  • 与您的Ubuntu虚拟机共享Dropbox/Sparkeshare文件夹,以便在Windows和Mac box以及Ubuntu虚拟机之间始终具有相同的代码
  • 这使您能够在windows/macos下使用最喜爱的编辑器编辑VM内的文件
  • 你也可以在Mac下使用相同的虚拟机

  • 在VirtualBox下安装Ubuntu非常快速、简单,而且有很好的文档记录,它几乎只是一个向导。或者,你可以试着找一个好的流浪者接受者(请参阅),或者四处打听一下,看看你的同事是否愿意分享他/她的vbox。

    我在处理大量资产的项目时遇到了开发性能下降(由于实时编译),但我不在Windows上

    我认为性能上的巨大差异可能是由于Windows下某些低效的资产编译造成的

    我没有任何Windows开发经验,很长一段时间没有使用Windows机器,但是当我切换到多线程服务器时,我在并行资产处理(开发中)中的性能显著提高。请记住,在任何情况下,默认的Rails Web服务器(Webrick)都是非常低效的

    作为康斯坦丁,目前有几种选择。您可以按处理模式对它们进行分组

    跳过所有关于Ruby线程、多进程等的背景历史,我邀请您在您的机器中尝试Puma,看看它是否能提高负载

    Puma更适合于提供真正多线程的Ruby实现,但引用了官方自述

    在MRI上,有一个全局解释器锁(GIL),确保一次只能运行一个线程。但是,如果您正在执行大量的阻塞IO(例如对外部API(如Twitter)的HTTP调用),Puma仍然可以通过允许并发运行阻塞IO来提高MRI的吞吐量(基于EventMachine的服务器(如瘦服务器)关闭此功能,要求您使用特殊的库)。 Puma旨在为机架应用程序提供简单、高性能的请求/响应管道


    您遇到了两个长期困扰Ruby开发人员的存在问题:

    • 韦布里克很慢。总是。别麻烦了
    • Ruby在Windows上的速度总是较慢。有时,正如你所发现的,数量级
    <>所以如果你坚持在Windows上进行开发(而不是只在Linux上开发,或者在Windows上运行的Linux虚拟机上开发),那么我们需要想出一些方法来把口红贴在猪身上。 一些想法:

    • 确保运行最新版本的Ruby
    • 尝试使用Thin部署nginx,如本文所示,尽管已经过时。这将帮助您充分利用Thin的多线程和异步性
    • 使用Capistrano通过此GitHub部署到Windows

    如果您决定在一个并非为Rails设计的环境中开发Rails已经足够了,那么您可以按照下面描述的方式设置VM。作者报告了显著的加速。

    您可以尝试在Linux虚拟机中设置它,通常情况下,这实际上会更快。您可以写更多关于“那50个文件”的详细信息吗?这些文件是CSS文件、JavaScript文件、JPG文件、PNG文件还是其他一些。。。从哪里加载文件?如果文件是从某个web服务器加载的,那么在HTTP头中是否设置任何缓存选项可能很重要。在Windows上,使用或其他工具跟踪10秒内的HTTP流量是很有帮助的。您可以将流量作为文件上传,并将URL包含到跟踪中。在这种情况下,其他人可以分析它。@AlexanderKosubek这将是一个巨大的过度实现和非常困难的问题,因为这个问题只发生在开发中。而且,CSS文件最初是SCS,当它们改变时需要神奇的预处理,所以我不确定我是否可以用一个单独的静态文件web服务器来完成。(不,预处理不是问题,它只发生在文件更改时,每次点击网页时都会发生延迟)我认为您需要在这里提供更多信息。我在干净的Windows7 64位机器上安装了Rails(Rails v3.2.13,ruby 1.9.3p392)。我准备好了。然后,我从另一台机器访问了该站点,并获得了您所看到的糟糕性能。然后我更新了我的webrick c