Laravel Homestead/Vagrant/Virtualbox is slow on Wi

2020-02-17 05:42发布

问题:

I have installed Laravel Homestead/Vagrant/Virtualbox on Windows as it said on official site

But it is really slow. Page update takes about 5 seconds.

And it is not only my observation. Laracast has a discussion about it.

The laracast forum has some interesting ideas, but it is a mess there (sorry Jeffery), it is hard to understand which ideas are accepted and which is declined.

Here on Stackoverflow we have a good voting system to vote up working solutions, and request authors to give more details for each solution individually. Please post your solutions and experiences.

From my experience - there was a situation once when windows run updates and shut down my system forcefully, and when it started it was incredibly fast (10 times faster at least) but after next restart it went slow again. Now I know that something may be done to speed it up, it is not a "slow hardware case" it is a software config case!

Im using Windows-10 on Intel-Core-i7, with Oracle Virtualbox-5.2.12... (everything is latest and there is nothing to update)

回答1:

NFS stands for Network File System and you need it for speed.

Laravel homestead tutorial does not say what NFS is and why you need it, which is why I ignored it on the initial install.

1) On your Windows host, install the plugin that adds NFS support to vagrant in Windows.

$ vagrant plugin install vagrant-winnfsd

2) Go to Homestead.yaml, it usually sits in C:\Users\username\Homestead\Homestead.yaml

3) Add type: "nfs" in the folders section like so:

folders:
    - map: ~/code
      to: /home/vagrant/code
      type: "nfs"

4) Run vagrant up --provision

Result:

The speed increases, as in @phazei's answer, from 8 to 2 seconds for each request, but it is much less work. @phazei's answer clarifies some background processes.

I tested it on windows 10 with Oracle Virtualbox-5.2.12, vagrant version-2.1.1.

Please note: Vagrant NFS page says

Windows users: NFS folders do not work on Windows hosts. Vagrant will ignore your request for NFS synced folders on Windows.

But if you have the plugin, you can ignore it.



回答2:

On laracasts forum the author named @phazei has answered it 3 years ago

What he said was:

1) on your Windows host install plugin that adds NFS support to vagrant in Windows.

$ vagrant plugin install vagrant-winnfsd

2) find your homestead.rb

I found it in

C:\Users\username\Homestead\scripts

even though he suggested to look at

C:\Users\username\AppData\Roaming\Composer\vendor\laravel\homestead\scripts

3)

Find the section where it's already looping through the settings["folders"] and replace it with the nfs code.

for me it was somewhere about line 140.

So, I commented out all statement if settings.include? 'folders' ... end

and added this instead:

    # EDIT:
    # Reorder folders for winnfsd plugin compatilibty
    # see https://github.com/GM-Alex/vagrant-winnfsd/issues/12#issuecomment-78195957
    settings["folders"].sort! { |a,b| a["map"].length <=> b["map"].length }

    # Register All Of The Configured Shared Folders
    if settings.include? 'folders'
        settings["folders"].each do |folder|
          config.vm.synced_folder folder["map"], folder["to"], 
          id: folder["map"],
          :nfs => true,
          :mount_options => ['nolock,vers=3,udp,noatime']
        end
    end

4) Then restarted vagrant with halt/up and my page load speed increased from 8 to 2 seconds.

Thank you @phazei. Your answer is still working after 3 years.

PS

I tested it on windows 10 with Oracle Virtualbox-5.2.12, vagrant version-2.1.1.

PPS

You can run vagrant up --provision, it will not affect the change you have made in homestead.rb