Vagrant + VirtualBox環境で開発をしていて、やたら遅いなと思った2点を解決した時のメモ。
通信が遅い
Vagrant上でdeployをすると、通常30秒で終わる処理が、なぜか5分以上かかっていた。
調べると、CentOSの問題とのこと。
[参考]
RHEL6/CentOS6では、single-request-reopen を必須にしたい…[IPv6]
↑ここに書いてある通り、
vagrant:~$ sudo vim /etc/resolv.conf
で
options single-request-reopen
を追記すると、通常の速度を取り戻した。
他で調べた感じだと、Vagrantの設定(Vagrantfile)でも回避可能とのこと。
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| ... config.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] end ... end
ただ、この設定だとメールが送れなくなる不具合があるそうなので、先の設定変更の方がよさそう。
共有フォルダへのアクセス(git)が遅い
共有フォルダへのアクセスが遅い。
如実なのは、アクセスが多いgitコマンド。git status実行すると、5秒位かかる。
vagrant:~$ time git status : real 0m4.984s user 0m0.035s sys 0m0.687s
共有フォルダをNFSにしてcachefilesdを使えば、100%ではないが、速度を改善することができる。
まずはVagrantfileの共有フォルダ設定部分をNFSに変更。マウントオプションはFSCである必要があるとのこと。
web.vm.synced_folder "../server", "/home/vagrant/server" ↓ web.vm.synced_folder "../server", "/home/vagrant/server", type: "nfs", mount_options: ['rw', 'vers=3', 'tcp', 'fsc']
そしてvagrant reloadで再起動。
$ vagrant reload
起動時にパスワードを聞かれると思うので、PCにログインした時のパスワードを入力。
いつも通りvagrant sshでログイン。
$ vagrant ssh
sshログイン後、yumにてcachefilesdをインストール。
$ sudo yum -y install cachefilesd
インストールが終わったら、cachefilesdを起動。
vagrant:~$ sudo /etc/init.d/cachefilesd start
キャッシュフォルダが出来ていればOK。
vagrant:~$ sudo find /var/cache/fscache/ /var/cache/fscache/ /var/cache/fscache/graveyard /var/cache/fscache/cache
NASの利用状況を確認します。
FSCがyesとなっていればfscacheが利用されているとのこと。
vagrant:~$ cat /proc/fs/nfsfs/volumes NV SERVER PORT DEV FSID FSC v3 c0a82101 801 0:19 1000001:0 yes
この後、git statusを実行すると、まだ遅い。
しかし、先程のキャッシュフォルダを見ると、キャッシュされていることが分かる。
vagrant:~$ sudo find /var/cache/fscache/ /var/cache/fscache/ /var/cache/fscache/graveyard /var/cache/fscache/cache /var/cache/fscache/cache/@4a /var/cache/fscache/cache/@4a/I03nfs /var/cache/fscache/cache/@4a/I03nfs/@96 /var/cache/fscache/cache/@4a/I03nfs/@96/Jc0000000000000cGx400 /var/cache/fscache/cache/@4a/I03nfs/@96/Jc0000000000000cGx400/@03 /var/cache/fscache/cache/@4a/I03nfs/@96/Jc0000000000000cGx400/@03/J11000000000004000400000000000000000M000000g00000100Kb000wFe000jt000oG3000000040000g000000000
何回かgit statusを実行すると、速度が改善されていくのが分かる。
vagrant:~$ time git status :real 0m1.085s user 0m0.020s sys 0m0.203s