VCCWの遅さはXdebugを切れば解消する

WordPress

Windows上にVCCW(Vagrant+VirtualBox)でWordPress開発環境を作ったが遅い。
とにかく遅い。異常に遅い。

インターネット越しのレンタルサーバより遅いなんてありえんやろ…。
こっちは利用者一人、SSDドライブのローカルマシンやで?

Instant WordPressだと倍くらい速いので、仮想マシンだから遅いと言われればそれまでなのかもしれないが…。
開発機なんだからスカスカ動いて欲しい!

スポンサーリンク

結論:Xdebugを切ると速い

先に結論から書くとVCCWでもXdebugを切れば速い
そこに至るまでの流れとしては、

  • Vagrantが遅い
    VCCWはPHP7のOPCacheが有効なので処理系の問題ではない
    単なるPHPファイルやHTMLは速い

    • 仮想ディスクの問題か?
  • とりまVirtualBoxのネットワーク設定を弄ったが、効果なし
    Instant WordPressだと速い

    • やはり仮想ディスクの問題か?
  • 別マシンのHyper-VにイチからUbuntuとWordPressを入れると速い
    • 仮想ディスクの問題ではなかった…Xdebugか?
  • VCCWの設定でXdebugを切ると速いヽ(=´▽`=)ノ

というものだった。

仮にディスクI/Oが原因ならMySQLを物理マシンに分けねばならず、ひと塊で開発環境を扱えるVagrantの良さが無くなるので嫌だと思っていた。
もっと単純な対処方法で済んでよかった。

Xdebugを切る方法

site.ymlの最後の方にxdebugに関する記述がある。

# PHP ini values
php_ini:
  (略)
  xdebug.remote_enable: false
  xdebug.remote_host: 127.0.0.1
  xdebug.remote_port: 9000
  xdebug.profiler_enable: false
  xdebug.idekey: VCCWDEBUG
  xdebug.remote_connect_back: false
  xdebug.remote_autostart: false

これらのxdebug.remote_enablexdebug.profiler_enablexdebug.remote_autostartfalseにする。

他のチューニング方法の紹介

当方の場合効果がありませんでしたが、ネットワーク系のチューニングもしたので記録を残しておきます。

方法1:パブリックネットワークにする

参照サイト様:

http://peng-note.com/archives/1766
VCCWをセットアップし、同じネットワーク内でWordPressサイトを閲覧できるようにする - MMiyauchi Blog
VCCWはMAMPの置き換えとして適任。デザイナーさんにオススメ! VagrantでWordPressをセットアップするのが地味に面倒だ。自分のセンスがないのかもしれないけど、以前Vagrantについてよく知らない頃に1
301 Moved Permanently
Vagrantをブリッジ接続する
当方で配布しているVagrant環境(MTOS版/WordPress版)は、一般的なVagrant環境と同様に、NAT(Network Address Translation)でVagrantに接続するようになっています。ただ、NAT経由になっていると、WordPressのダッシュボードの表示が遅くなる問題があります。...

VCCWは「ホストオンリーアダプター」がデフォルトだが、VirtualBoxはこれだと遅いので「ブリッジ接続」にすると改善される、とのこと。

Vagrantfileの修正

作成済みVCCW仮想マシンのVagrantfileを下記のように変更してみた。

(修正前)
config.vm.network :private_network, ip: _conf['ip']
(修正後)
config.vm.network :public_network,  bridge: "Realtek PCIe GBE Family Controller", ip: _conf['ip']

ポイント:

  • private_network” は「ホストオンリーアダプター」を、 “public_network” は「ブリッジ接続」を意味する。
  • _conf['ip']site.yml又はprovision/default.ymlipと紐づく。
    # Network Settings
    hostname: techo.red.local
    ip: 192.168.1.21

    当方の環境はサブネットワークが192.168.1.0、ホストマシンのIPが192.168.1.20なので、192.168.1.21にした。

  • Realtek PCIe GBE Family Controller」の部分はコントロールパネルの「ネットワーク接続」で調べる。NICのプロパティ画面にて名前をコピペする。
    Windows NIC名称の調べ方

hostsの修正

ホストマシン側(Windows)のhostsを修正するのを忘れないように。

(修正前)
192.168.33.11	techo.red.local
(修正後)
192.168.1.21	techo.red.local

仮想マシン再起動

起動 or 再起動。

vagrant up
vagrant reload

結果

結果は体感速度改善せず。
なお、仮想マシンのNIC設定は /etc/network/interfaces で確認できる。
Vagrantが設定した部分は #VAGRANT-BEGIN#VAGRANT-END とコメントしてくれている。

fuka@cyan MINGW64 /c/usr/dev/vagrant/techo.red.local
$ vagrant ssh
(仮想マシンに入る)
vagrant@techo:~$ vi /etc/network/interfaces
:(略)
#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
auto enp0s8
iface enp0s8 inet static
      address 192.168.1.21
      netmask 255.255.255.0
#VAGRANT-END

方法2:フォルダ同期をNFS方式に変更する

参照サイト様:

https://webtatan.com/blog/wordpress/vccw-speedup

VirtualBoxのshared folders機能を使ったファイル共有は遅いのでNFSで共有すると良い、とあるのでやってみた。

NFSプラグインのインストール

vagrant plugin install vagrant-winnfsd

Vagrantfileを修正

とりあえず自分はこうした。

(修正前)
config.vm.synced_folder _conf['synced_folder'],
    _conf['document_root'], :create => "true", :mount_options => ['dmode=755', 'fmode=644']
(修正後)
config.vm.synced_folder _conf['synced_folder'], _conf['document_root'], type: "nfs"

このままだと起動しても

fuka@cyan MINGW64 /c/usr/dev/vagrant/techo.red.local
$ vagrant reload
==> techo.red.local: Attempting graceful shutdown of VM...
:(略)
NFS requires a host-only network to be created.
Please add a host-only network to the machine (with either DHCP or a
static IP) for NFS to work.

NFSはhost-only networkでなければならないと言われて動かないので前章で行ったパブリックネットワークの設定を元に戻す。

結果

体感速度向上せず。

Vagrantに関する他のページ

VCCWでWordPress開発環境を作る方法
VagrantとVCCWのインストール手順の説明。ホストOSはWindows10 Pro。 VCCWはVagrantとVirtualBoxを組合せて動くWordPress開発用の仮想マシンです。
VCCW仮想マシンを増やす方法
VagrantのVCCW仮想マシンを増やす場合の操作方法の説明。
タイトルとURLをコピーしました