У меня 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, он отключает веб-сервер из-за медленной загрузки страницы.

Я использую OS X Mavericks, Виртуальный ящик 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

РЕДАКТИРОВАТЬ

Просто пытаюсь получить доступ к serverfault.com

  • время curl serverfault.com (реальный 0m10.516s)
  • время wget serverfault.com (реальное 0m10.607s)
  • time lynx -dump serverfault.com (реальный 0m30.709s)

2 ответа2

1

Я испытывал ту же проблему. После некоторого ошибочного устранения неполадок и, наконец, некоторой звуковой помощи, я обнаружил проблему:

Проверьте файл /etc /network /interfaces на вашей виртуальной машине. Вероятно, вам потребуется установить «адрес» и «маску сети» для адаптера только для хоста, а также ваш «шлюз» на адаптере NAT для вашей виртуальной машины, чтобы иметь доступ к Интернету (с вашей виртуальной машины). В основном ваши сетевые адаптеры не настроены правильно (и ваша конфигурация Virtual Box также может быть неправильной).

Моя виртуальная машина была скопирована с другого компьютера, и у меня не было правильной настройки сетевых адаптеров в Virtual Box (не моя виртуальная машина, а сама виртуальная коробка для моей хост-машины). Я добавил адаптер для обоих адаптеров VM (NAT и Host-Only Network). После настройки моего файла /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/

Я установил статический адрес своей виртуальной машины и добавил «address», «netmask» к адаптеру Host-Only на моей виртуальной машине и «gateway» к адаптеру NAT на моей виртуальной машине.

Проверьте виртуальную коробку -> Сетевые настройки (не сетевые настройки для вашей виртуальной машины, а фактические настройки для приложения). Мой адаптер называется vboxnet0. Просто убедитесь, что вы запускаете команды ifdown и ifup для этого интерфейса (на вашей виртуальной машине).

Я полагаю, что проблема заключается в том, что виртуальная машина пытается найти машину, подключенную к ней (хосту), и ей нужно время ожидания, прежде чем она ответит.

Надеюсь, это поможет.

Вот мои последние настройки /etc /network /interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface (NAT)
auto eth0
iface eth0 inet dhcp
gateway 192.168.56.1

# Secondary network interface (Host Only)
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0

К вашему сведению: мой хост-компьютер - это то, что я вставил в качестве шлюза.

0

Вам нужно дополнительно отделить свои задачи, чтобы точно определить, где проблема.

Вы сказали, что «требуется около 10 секунд для подключения к серверу», так что в основном почти 99% времени вашей команды wget тратится на подключение к серверу? Вам нужно еще сломать эти 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 заняло только 38 мсек из моего локального DNS. Если у вас это занимает гораздо больше времени, рассмотрите возможность установки DNS-сервера с локальным кэшированием, как я и сделал. Это действительно просто, проверьте http://sfxpt.wordpress.com/2013/11/30/dnsmasq-installation-configuration-5/, и в качестве бонуса, проверьте http://sfxpt.wordpress.com/2014/01/05/лучший метод блокировки рекламы в упаковке /,

Если ваше разрешение DNS так же быстро, как у меня, то проблема в другом месте, попробуйте httping и отправьте то, что у вас есть.

httping - ping-подобная программа для http-запросов

В общем, вам нужно дополнительно отделить ваши задачи, чтобы точно определить, где проблема. Например, как быстро получить файлы с вашего локального http-сервера?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .