Ubuntu Virtual Box 网络速度 - DNS 解析

Ubuntu Virtual Box 网络速度 - DNS 解析

我在 Virtual Box 上运行着 Ubuntu 12.04 TLS,当我尝试时,wget它需要大约 10 秒钟才能连接到服务器,尽管下载本身很快。

如果我在笔记本电脑的终端中运行相同的命令,它是立即的。

:~$ time wget example.com/profile/avatar/USERID-640.jpg
--2014-02-26 09:52:58--  http://example.com/profile/avatar/USERID-640.jpg
Resolving example.com (example.com)... 54.230.2.117, 54.240.166.35, 54.230.0.66, ...
Connecting to example.com (example.com)|54.230.2.117|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 40145 (39K) [application/octet-stream]
Saving to: `USERID-640.jpg.7'

100%[===========================================================================>] 40,145      --.-K/s   in 0.04s   

2014-02-26 09:53:08 (898 KB/s) - `USERID-640.jpg.7' saved [40145/40145]


real    0m10.269s
user    0m0.000s
sys 0m0.004s

网络设置如下:

虚拟盒网络设置

图像设置摘要:

  • 连接至:桥接适配器
  • en0:Wi-Fi(AirPort)
  • 适配器类型:半虚拟化网络 (virtio-net)

我也尝试过其他适配器类型, 没什么区别

该文件应该立即下载,但是当我尝试检查 PHP 页面中是否存在文件时,由于页面加载速度缓慢,导致 Web 服务器超时。

我正在使用 OS X mavericks,Virtual box 3.3.6

编辑

/etc/resolv.conf按要求添加:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.0.1
search Home

编辑

只是想访问服务器故障

  • 时间 curl serverfault.com (实际 0 分 10.516 秒)
  • 时间 wget serverfault.com(实际 0 分 10.607 秒)
  • 时间 lynx -dump serverfault.com (实际 0m30.709s)

答案1

我遇到了同样的问题。经过一些错误的故障排除,并最终获得一些可靠的帮助后,我发现了问题所在:

检查虚拟机上的 /etc/network/interfaces 文件。您可能需要为主机专用适配器设置“地址”和“网络掩码”,并在 NAT 适配器上设置“网关”,以便虚拟机能够访问互联网(从虚拟机)。基本上,您的网络适配器似乎配置不正确(并且您的 Virtual Box 配置也可能错误)。

我的虚拟机是从另一台计算机复制过来的,而且我没有在 Virtual Box 中设置正确的网络适配器(不是我的虚拟机,而是主机的虚拟机本身)。我为两个虚拟机适配器(NAT 和仅主机网络)添加了一个适配器。配置我的 /etc/network/interfaces 文件后,一切都正常工作;我的虚拟机/浏览器立即响应,我能够从我的虚拟机访问互联网。

您可以在此处找到有关如何更改这些设置的详细信息:

https://askubuntu.com/questions/346838/how-do-i-configure-my-dns-settings-in-ubuntu-server

有关 /etc/network/interfaces 文件的更多完整详细信息请参见此处:

http://www.cyberciti.biz/faq/setting-up-an-network-interfaces-file/

我将我的虚拟机的地址设置为静态,并向虚拟机上的仅主机适配器添加“地址”、“网络掩码”,向虚拟机上的 NAT 适配器添加“网关”。

检查您的虚拟盒 -> 网络设置(不是虚拟机的网络设置,而是应用程序的实际设置)。我的适配器称为“vboxnet0”。只需确保您为该接口运行 ifdown 和 ifup 命令(在您的 VM 上)。

我认为问题在于虚拟机尝试查找连接到它的机器(主机),并且必须超时才能响应。

我希望这有帮助。

以下是我的最终 /etc/network/interfaces 设置:

# 环回网络接口
自动档
iface lo inet 环回

# 主网络接口(NAT)
自动 eth0
iface eth0 inet dhcp
网关 192.168.56.1

# 辅助网络接口(仅主机)
自动 eth1
iface eth1 inet 静态
地址 192.168.56.101
网络掩码 255.255.255.0

仅供参考:我把主机用作网关。

答案2

您需要进一步分离您的任务以便查明问题所在。

您说“连接到服务器大约需要 10 秒钟”,那么基本上您的wget命令的 99% 的时间都花在了连接服务器上?您需要进一步细分这 10 秒。

是否花费在DNS解析上?

尝试

dig serverfault.com

这是我的结果:

;; ANSWER SECTION:
serverfault.com.        35      IN      A       198.252.206.140

;; Query time: 38 msec
;; SERVER: 192.168.2.100#53(192.168.2.100)

即,从我的本地 DNS 来看,DNS 解析仅花费了 38 毫秒。如果您的 DNS 解析时间比这长得多,请考虑安装本地缓存 DNS 服务器,就像我一样。这真的很简单,请查看http://sfxpt.wordpress.com/2013/11/30/dnsmasq-installation-configuration-5/,还有额外福利,请查看http://sfxpt.wordpress.com/2014/01/05/the-best-ad-blocking-method-in-a-package/

如果您的 DNS 解析与我的一样快,那么问题就出在其他地方,请尝试httping回复您所得到的信息。

httping - 类似 ping 的 http 请求程序

总而言之,你需要进一步分离任务,以便准确找出问题所在。例如,从本地 http 服务器获取文件的速度有多快?

相关内容