在VirtualBox上的Ubuntu 11.10上的Rails 3.1非常慢
我在Windows7上安装了带有Ubuntu 11.10的VirtualBox。 我在webrick(rails s)上运行Rails 3.1并从Windows上的浏览器转到VirtualBox的IP地址(192.168.2.xxx:3000)。 此刻我遇到了麻烦 – 页面加载速度非常慢,在Rails控制台上,我看到它响应文件的速度有多慢(css,js,images):每个最多5秒! 但是:如果我在Ubuntu中去0.0.0.0:3000 – 它完美无缺。
问题出在哪儿? 在哪里寻找解决方案?
如上所述,它似乎是另一个问题的重复,虽然该问题特别提到了webrick和远程桌面连接,我都不知道,因为我不知道它是webrick特有的。
所以我认为应该注意的是,这不是虚拟机或BIOS设置或类似设置的错误配置。 这绝对是一个问题。 如果他们不尝试进行反向DNS查找,其他服务也可以正常工作。
问题源于Webrick的默认设置,尝试进行反向DNS查找,这在查找失败时会出现问题,因为它往往会在我的本地计算机上始终如一地执行。
有几种方法可以解决这个问题。
Hack / etc / hosts
第一种是破解/etc/hosts
这样你的客户端机器就有了一个条目。 黑客/etc/hosts
是半高级的,但基本上相当于确定你主机的IP地址是什么,并在/etc/hosts
文件中添加一行。 这需要根级权限。
- 获取您的IP地址 – 当您提出请求时,这将在Rails控制台中显示,并且看起来像这样:
Started GET "/" for 10.0.2.2 at Tue Aug 21 11:33:23 -0700 2012
– 在此case,IP地址是10.0.2.2。 - 在
/etc/hosts
添加一行以标识该IP地址:10.0.2.2 Nerdmaster
一切都应该好!
禁用守护程序
这似乎适用于一些ubuntu用户:
service avahi-daemon stop
鉴于您正在查杀服务,可能还有其他应用程序存在问题。 这可能是最好的临时措施,而不是永久措施,但我对服务知之甚少,所以不要相信我的话:)
这还需要根级权限。
哈克webrick
我真的很鄙视黑客核心Ruby代码,我必须在每次更新时重新破解,但这是许多人所做的:
- 找到你的
webrick/config.rb
- 它可能在
/usr/lib/ruby/[version]/webrick/config.rb
如果你正在运行一个普通的Ruby - 如果您使用RVM,则必须找到相应的ruby目录,例如
/home/username/.rvm/rubies/[version]/lib/ruby/[version]/webrick/config.rb
- 我不知道杰克有关像rbenv这样的其他选择
- 最坏情况,尝试
find / -type d -name "webrick"
- 它可能在
- 在你最喜欢的编辑器中编辑(显然这将是vim)
- 寻找
:DoNotReverseLookup => nil
。 - 将
nil
更改为true
。 - 如果您没有看到此设置,则可能必须使用上面的
/etc/hosts
hack。
- 寻找
如果您不使用rvm或类似的东西,这将需要根级权限。
不要使用webrick
我不认为这是一个真正的解决方案,因为webrick有时候是你最好的(或者至少是最快的)选项,但你可以尝试不同的服务器。 瘦和杂种似乎有很好的支持,并根据这个问题的其他人说,似乎不进行反向DNS查找。 我没有尝试过这些方法,所以我不确定它们有多好。
这可以在没有根级权限的情况下完成。
编辑您的Gemfile以添加:
gem 'mongrel' bundle install rails s -> will use mongrel instead of webrick and be lightning fast.
对我来说,Ubuntu来宾VM上的Rails 4(每个资产304的1秒+)的缓慢结果是Virtualbox共享文件夹 。 在这个post中发现原因,远离共享文件夹为我修复了速度问题。
我正在使用带有8 ram,250g ssd的windows10家庭版,当我在ubuntu服务器16的虚拟机盒上运行Rails4.x(瘦)时,我发现渲染时间非常慢,大多达4 – 5秒,最后我感动了rails从主机共享文件夹项目到Virtualbox vm里面,现在变得非常快。
尝试在Windows上关闭防火墙或防病毒软件。
我喜欢Scott的回答只是转换为mongrel,但如果你使用现代版本的ruby(> 1.9.1),则不再支持mongrel。 ( 在Ruby 1.9.3中安装Mongrel )
我切换到瘦 – http://code.macournoyer.com/thin/
sudo gem安装瘦
薄的开始
这对我来说非常活泼。