2

Я работаю с командой над разработкой веб-сервиса и клиента, каждый из нас, конечно, работает на наших собственных машинах. Для простоты и согласованности мы используем похожие домены в коде и обновляем /etc/hosts чтобы преобразовать эти домены в localhost.

  1. отлично работает для моего веб-браузера; время отклика быстро
  2. curl и wget занимают ~ 4 секунды для разрешения DNS перед успешным завершением запроса

Я нашел флаг --resolve для curl, который разрешает задержку, но я также мог бы использовать 127.0.0.1 и определить заголовки, необходимые для получения того же эффекта.

с флагом (и обновленным файлом /etc/hosts )

# /etc/hosts
...
127.0.0.1 mp-api.example.local

команда

curl -k -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total}\\n \
  --resolve mp-api.example.local:8094:127.0.0.1 \
  -H 'Host: mp-api.example.local:8094' \
  'https://mp-api.example.local:8094/api/categories/tree.json'

с 127.0.0.1

curl -k -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total}\\n \
  -H 'Host: mp-api.example.local:8094' \
  'https://127.0.0.1:8094/api/categories/tree.json' 

Каковы некоторые из причин задержки разрешения DNS для таких инструментов, как curl и wget? И каковы некоторые эффективные способы устранения неполадок, которые задерживают?

2 ответа2

1

Предполагая, что в инструменте «Сеть» могут быть настройки, я нашел интересными значения в «Параметры обхода прокси ...».

Может показаться, что у меня были проблемы с разрешением DNS для curl и wget, потому что я использовал домен, заканчивающийся на .local . Возможно, это по сути зарезервированная стоимость.

Поэтому я изменил свои настройки, поэтому теперь я использую домен, оканчивающийся на .loc и все снова в порядке - не более 4 секунд в режиме ожидания, в ожидании разрешения DNS.

0

Проверьте файл /etc/nsswitch.conf

Там конфигурация, как имена в id конвертируются. Одна из строк для имен хостов:

hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname mymachines

Убедитесь, что "файлы" на первом месте.

UPD.

Скручивайте локальные имена хостов в Mac OS X Yosemite

похоже, curl берет на себя ответственность за разрешение имен и предпочитает ipv6

попробуйте добавить ключ --ipv4 или добавить ipv6 к хостам

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