Vagrant + Apache + PHP在Windows平台上运行极慢

3
我有一个运行Apache和PHP的Vagrant虚拟机。所有请求最初都由mod_rewrite路由。
当请求中没有.php时,Apache直接提供该文件,几乎可以立即从vagrant VM内部和外部进行访问。
当请求中包含.php时,会检查一些重写条件,最终Apache将请求发送到PHP,然后加载我们的Symfony内核环境等。我尝试在内核引导文件的第一行添加exit('test');,以便响应尽可能快。实际上,所有正在发生的事情就是Apache将请求发送到PHP,然后立即退出。从VM内部执行几乎可以瞬间完成。从主机执行则需要10多分钟的加载时间。
此外,在OS X上一切正常,完全相同的设置在另一台Windows机器上也能正常工作。我已经尝试重新安装/重建几乎驱动这一切的技术的每个部分,但都无济于事。
那么到底是怎么回事呢?从VM外部请求PHP与非PHP内容之间存在某些不同之处,但仅在请求来自特定的Windows机器时才存在这种差异。
我真的很困惑。有任何想法吗?

你遇到问题的Windows版本是哪个?在尝试此操作时,您可以退出任何可能占用资源的应用程序,例如Skype、Win防火墙、Win杀毒软件(尽可能多地退出)吗?尝试创建一个新的Windows用户,注销当前用户,以新用户身份登录,然后在那里再次尝试-这将清除启动过程中的任何不良内容。最后,您的Vagrant / VM日志中有什么问题吗? - halfer
(另外,有一个点是你可能会花很多时间在这上面,而重新构建Win机器会更容易 - 知道何时放弃!) - halfer
请查看Symfony2和Twig在vagrant box中的性能,这可能与此性能问题有关。 - A.L
@halfer 同时,当这种情况发生时,我的系统CPU使用率在0-5%之间,内存使用率为19%,磁盘为3%,网络为0%。资源不应该是问题。 - Trappar
显示剩余3条评论
1个回答

1

通过从virtualbox提供者切换到vmware,我成功地将一个非常慢的vagrant网站变得完全可用。

然而,这是一个有点昂贵的解决方案,因为你绝对不应该安装vmware的试用版,因为它与vagrant vmware插件不兼容(请按照官方说明卸载vmware,然后购买完整版本重新安装)。

此外,vagrant vmware插件是hashicorp的单独购买产品。根据我的经验,它们一定是值得的。你会为轻松的生活支付大约100美元吗?

在花费之前可以尝试的替代方法:

在Vagrantfile中明确指定虚拟机的资源,并使用private_network而不是端口转发。为虚拟机允许1/4的系统内存。不要使用已经在你的系统上使用的IP地址。如下所示,它应该可以正常工作。

Vagrant.configure(2) do |config|
  config.vm.box = "lattice/ubuntu-trusty-64"
  config.vm.network "private_network", ip:"192.168.50.4"

  config.vm.provider "virtualbox" do |v|
    v.memory = 2048
    v.cpus = 2
  end
end

1
我可能应该提到我已经在使用VMware-workstation提供程序了。 - Trappar
该死的VMware,我之前说了这么多好话。现在显然的建议是:是否值得尝试使用VirtualBox提供程序? - tobuslieven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接