在Vagrant环境中Drupal非常慢

Rob*_*son 12 drupal drupal-7 vagrant

我已经开始将很多开发环境迁移到Vagrant.到目前为止,这几乎对所有事情都很好,但我们的第一次Drupal迁移无法使用.这令人难以置信地缓慢.我们的Wordpress,CakePHP和Node.js网站都表现得非常充分或更好,但不是Drupal.这种想法太可怕了.

这个盒子是Veewee创建的Ubuntu 12.04 64bit机器.它与我们用于所有基于Web的项目的基本框相同,因此没有什么独特之处.在我的sites目录中,我有一个sites/my-site/带有所有站点资源的规范目录()和一个带有域名(sites/dev.mysite.com -> /vagrant/www/sites/my-site)的规范目录的符号链接,这对于团队正在使用的某个模块显然是必需的.

这是一个混合的Windows/OSX开发团队,它在两个平台上都很慢.我唯一的半非传统片段Vagrantfile是这样的:

config.vm.forward_port 80, 8080

config.vm.share_folder( "v-root", "/vagrant", ".", :extra => 'dmode=777,fmode=777' )

# Allows symlinks to the host directory.
config.vm.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]

Vagrant::Config.run do |config|
  config.vm.provision :shell, :path => "provision.vm.sh"
end
Run Code Online (Sandbox Code Playgroud)

我的shell配置程序只做了几件事:

  • 安装drush
  • 为规范站点目录创建上述符号链接
  • 写出一个Nginx服务器块
  • 如有必要,创建一个settings.php文件.

我能做些什么来提高性能吗?喜欢,很多?

UPDATE

我把它缩小到了一个看起来问题就是远程数据库的地步.为了比较没有项目行李的苹果和苹果,我下载了Drupal 7.21的新副本,并从Vagrant Web服务器对3个不同的数据库执行标准安装:

  • 在与Web服务器相同的Vagrant VM上创建的新数据库(localhost)
  • 在原始问题(dev)中使用的共享开发服务器上创建的新数据库
  • 在EC2实例上创建的新数据库(tmp)

完成后,我登录到新的Drupal安装并加载主页(localhost:8080)5次.然后我以相同的方式连接到每个数据库并加载相同的页面.我发现当Drupal连接到远程数据库时,页面加载速度慢了4-6倍.

请记住,这是一个新的(标准)安装.没有项目行李.

Pom*_* Wu 11

我也受到类似问题的打击.对于包含+1000个文件的项目树,VirtualBox共享文件夹似乎非常慢.

切换到NFS可能是解决方案.


BMD*_*Dan 5

问题几乎肯定是skip_name_resolve(需要my.cnf)或VirtualBox对大量文件的共享目录的处理不当.两者都很容易跟踪strace -c,但您可能会发现一次只更正一个,看看哪个修复了您的性能问题.

如果您在这两次更改后仍然看到缓慢,请告诉我们,我们可以进一步调试它.


rin*_*nge 1

我只是想自己解决这个问题。我尝试了这里和 Rails Windows Vagrant 的建议,响应时间非常慢。运气不太好,在没有渲染真实数据的情况下,我在一个热请求上将 1800 毫秒的响应时间缩短了 200 毫秒。这是使用 Ruby on Rails,而不是 Drupal。但问题是一样的。

将共享文件夹切换到 Rsync 后,对于同一请求,我的响应时间约为 280 毫秒。

流浪文件:

  config.vm.synced_folder '.', '/vagrant', type: 'rsync',
                                       rsync__exclude: '.git/'
Run Code Online (Sandbox Code Playgroud)

用法:

$ vagrant up
$ vagrant rsync-auto
Run Code Online (Sandbox Code Playgroud)

后一个命令将自动监视您的工作目录和同步更改。

请参阅https://www.vagrantup.com/docs/synced-folders/rsync.htmlhttps://www.vagrantup.com/docs/cli/rsync-auto.html