100
95

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vagrant + VirtualBoxでアプリがやたら重い時に試した方が良いこと

Last updated at Posted at 2014-04-24

#Vagrant + VirtualBoxでアプリがやたら重い時に試した方が良いこと

##環境
ホスト側
Mac OS X 10.9.2
Vagrant 1.5.1
VirtualBox 4.3.10

ゲスト側
CentOS 6.5

##対象者

  • VirtualBoxを使っている
  • CentOSを使っている
  • アプリが何か重いなーおかしいなーと思っている人

状況

  1. VirtualBox上でFacebookアプリを作っていた。
  2. なんかしらんがアプリ動かすとめっちゃ重い
  3. 調べるとどうやらfacebookSDKでgraphAPI叩いた時にめっちゃ時間かかってる
  4. 内部ネットワークへのアクセスは軽い、外部ネットワークへのアクセスが重い

という感じで、調べてみると外部ネットワークへのアクセスに時間かかってた事を発見
VagrantをNATモードで動かしているんだが、NAT変換するときの名前解決にはちゃめちゃに時間がかかっているご様子

追記:CentOS固有の問題だったことがわかりました。
http://www.kunitake.org/chalow/2012-11-02-1.html

じゃあどうしたらいいの

方法としてはそもそも仮想環境をブリッジ接続にしちゃって、静的IP割り振ってあげれば良いってのがあった。
http://www.h-fj.com/blog/archives/2013/10/31-103556.php

静的IP振って良いんだったら上記でもOKだったんだけど、今回はNAT変換モードのままうまくやる方法を書く。

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

http://vboxmania.net/content/vboxmanage-modifyvm%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89
によると


--natdnsproxy<1-N> on|off:
このオプションは、NATエンジンのプロキシがすべてのゲストマシンのDNS要求をホストマシンのDNSサーバーに要求します。
--natdnshostresolver<1-N> on|off:
このオプションは、NATエンジンがDNS要求を処理する際にホストのリゾルバ機構を使うようになります。
- See more at: http://vboxmania.net/content/vboxmanage-modifyvm%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89#sthash.MYEzzmBh.dpuf

とのことで、
ゲストOSからのネットワーク接続の際にホストマシンのDNSサーバーを使って名前解決をする様になり、これで速度改善しました。

バグ(メール送れない)

--natdnshostresolverをonにしている場合にmxレコードが引けずにaレコードが返ってくるというバグが
virtualboxにあるらしく、実際この設定をonにすると仮想マシンからメールが送れなくなります。
https://www.virtualbox.org/ticket/11540

なので、メールを送るシステムの場合はnatdnshostresolverはoffにした方が良いです。
(VagrantFileで一度onにした場合は一度明示的にoffにしてreloadなりしないと直らないので注意)

ちなみに、これやると再びネットワークが遅くなります。

バグ対応

vagrant $ sudo vim /etc/resolv.conf

で、以下を追記する

options single-request-reopen

これでようやく解決しました。

100
95
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
95

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?