我在 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 服务器获取文件的速度有多快?