我目前正在开发一个网络应用程序,为此,我在Windows和Mac dev机器之间进行了交替。
我的问题是页面在Windows上缓慢地呈现非常,但这不是我的Ruby代码运行缓慢,而是静态文件的缓慢提供。
一个典型的页面需要大约200毫秒来渲染并在dev中提供服务(Mac和Windows在这里类似),但它包含大约50个静态文件(在生产中它只有5到10个,一旦它们被缩小和组合,但是在开发中他们仍然是分开的)。
这些50个文件在Mac上提供约1.5秒,但在Windows上约为 10秒。这使得测试事情变得非常曲折......
我尝试了Webrick和Thin,它们大致相同。
有没有人发现这个问题,知道如何改善这个问题?
我已经尝试将Webrick conf更改为“:DoNotReverseLookup => true”,如this answer中所述,但它没有帮助。
任何帮助将不胜感激
谢谢!
丹尼尔
答案 0 :(得分:2)
你遇到了两个长期困扰Ruby开发人员的存在问题:
因此,如果您坚持在Windows上进行开发(而不是仅在Linux上开发或在Windows上运行的Linux VM上开发),那么我们需要找出一些方法将口红放在猪身上。
一些想法:
如果您确定已经在不适合的环境中开发了足够的Rails,则可以按照here所述的方式设置VM。作者报告了显着的加速。
答案 1 :(得分:1)
在VirtualBox中使用Ubuntu VM,它可能更接近您的部署环境,然后是Mac和Windows,这意味着更少“但它在开发中工作”的麻烦。
此外,您将节省大量时间处理不同ruby / Gems实现的怪癖以及由于本机扩展而导致的各种级别的头痛。
你可以:
VirtualBox下的Ubuntu安装快速,简单且文档齐全,它几乎只是一个向导。或者,你可以尝试找一个好的流浪食谱(见http://www.vagrantup.com/)或四处询问你的同事是否愿意分享他/她的vbox。
答案 2 :(得分:0)
我的开发性能下降(由于实时编译)与具有大量资产的项目一起工作,但我不在Windows上。
我认为在Windows下的某些低效资产编译可能会导致较大的性能差异。
我没有任何Windows开发经验,我很长一段时间没有使用Windows机器,但是当我切换到多台时,我在并行资产处理(开发中)中的性能显着提高了 - 线程服务器,特别是Puma。请记住,在任何情况下,默认的Rails网络服务器(Webrick)都是非常低效的。
作为Konstantine explained in this answer,目前有几种选择。您可以按处理模式对它们进行分组。
删除有关Ruby线程,多进程等的所有背景历史记录,我邀请您在您的计算机中尝试使用Puma,看看它是否能提高负载。
Puma在提供真正多线程的Ruby实现方面效果更好,但引用官方自述文件
在MRI上,有一个全局解释器锁(GIL),确保一次只能运行一个线程。但是,如果您正在进行大量阻止IO(例如对Twitter等外部API的HTTP调用),Puma仍然可以通过允许阻塞IO同时运行来提高MRI的吞吐量(基于EventMachine的服务器,如Thin)关闭此功能,要求您使用特殊库)。 Puma旨在为Rack应用程序提供简单而高性能的请求/响应管道。