Производительность локального домена против localhost - PullRequest
2 голосов
/ 10 января 2010

Есть ли разница в производительности между TCP-соединениями с:

  • localhost / 127.0.0.1
  • домен, который разрешается на локальную машину

Или, более конкретно, последние соединения проходят через устройство обратной связи или через реальную сеть?

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

Ответы [ 2 ]

7 голосов
/ 10 января 2010

Это зависит от реализации и операционной системы. В Windows все, что подключается к локальному IP-адресу, даже если это внешний IP-адрес, будет проходить через петлю. Это задокументированная проблема для приложений, таких как анализаторы пакетов, потому что вы не можете прослушивать обратную петлю. (Windows не рассматривает обратную связь как «устройство» - она ​​обрабатывается на сетевом уровне.) Однако в этом случае она будет работать в вашу пользу.

Linux, напротив, будет следовать тому, что у вас есть в таблице маршрутизации, поэтому пакеты, предназначенные для вашего локального компьютера , будут отправляться на локальный компьютер по сети, если таблица маршрутизации не работает должным образом сконфигурировано. Однако в 99% случаев маршрутизация будет настроена правильно. Ваши пакеты не будут проходить через устройство обратной связи, но стек TCP / IP будет знать, что вы связываетесь с локальным IP-адресом, и он будет фактически выходить и возвращаться в правильное устройство Ethernet.

В правильно настроенной среде единственным узким местом для использования доменного имени является время разрешения DNS. Обращение к внешнему DNS может добавить дополнительную задержку в вашу конфигурацию. Однако, если вы добавите имя домена в ваш файл / etc / hosts (C:\Windows\System32\drivers\etc\hosts в Windows), ваша система пропустит фазу разрешения DNS и получит IP-адрес напрямую, что сделает это время спорным.

1 голос
/ 10 января 2010

Это зависит от того, как имена разрешены. Процедура обычно сначала /etc/hosts, а затем DNS, если это не удается. Если localhost в вашем /etc/hosts, то добавление whatever.wherever в файл также разрешит его с той же скоростью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...