【问题标题】:Is VirtualBox/Vagrant supposed to be this slow or am I missing something?VirtualBox/Vagrant 应该这么慢还是我错过了什么?
【发布时间】:2017-05-21 21:48:51
【问题描述】:

我正在尝试找出在 Windows 中开发 Rails 应用程序的最佳方法,因此,我尝试在带有 Vagrant 的虚拟机上运行它们。设置它非常简单,但我发现它非常慢到让我质疑为什么存在像 Vagrant 这样的东西,这让我觉得我可能错过了一些东西。

我正在运行 Ruby 2.1.5、Rails 3.2、Windows 10、Webrick、最新的 Vagrant、Ubuntu 14.04(以匹配我们的服务器)和 2GB 的 RAM。从应用加载页面似乎需要将近一分半钟:

在 WSL 中运行 Rails 的同一页面大约需要 10 秒(也是不可接受的):

我在 i5 2.6GHz 上运行并启用了虚拟化。

【问题讨论】:

  • 您允许虚拟机使用多少内存?新生成的 Rails 应用的性能比较如何?
  • 你好@Ryan:我给了 VM 2GB 的 RAM。我还没有测试过新的 Rails 应用程序。
  • 尝试为 VM 提供至少 4 GB 的空间,但最好尽可能多地留出空间。
  • 它并没有使用所有的 2GB(从未接触过交换空间),但我尝试给它 4GB 并且它对性能没有影响。

标签: ruby-on-rails ruby vagrant vagrant-windows


【解决方案1】:

我可能迟到了,但这是我发现的。 VirtualBox 文件共享 很慢,就像“死慢”一样。在请求期间,Rails 将创建临时文件,特别是 Sass 和 Haml 等。如果创建了数千个文件,这些文件将在虚拟机和主机之间来回同步。这会阻塞 IO 并极大地减慢请求速度。

可能的修复包括:

  • 尝试从同步中排除像tmp 这样的路径。这可以使用Vagrant rsync 文件机制实现。
  • 有更快的同步。这可以使用NFS 进行文件共享来实现。设置起来更麻烦,但速度更快。没有尽可能快,但 YMMV。
  • 完全避免同步。我尝试将 Rails 配置为使用 tmp 等的其他路径。但没有走得很远。也许是其他人做的?

【讨论】:

    【解决方案2】:

    你没有提供你的 Vagrantfile。但是,是的,如果您没有按照 vagrant 的建议使用 smb,则 Windows 上的文件共享速度非常慢:https://www.vagrantup.com/docs/synced-folders/smb.html

    【讨论】:

      猜你喜欢
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      相关资源
      最近更新 更多