Назад | Перейти на главную страницу

Локальный сервер Devel медленный на 192.168.0. * По сравнению с localhost

Я хочу, чтобы мой сайт разработки был доступен большему количеству компьютеров в доме. Я обнаружил, что доступ к нему через внутренний IP-адрес, например 192.168.0.198, очень медленный по сравнению с подключением к localhost.

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

На сервере запущен nginx для статического контента, перенаправляемый на apache (127.0.0.1:8888) для динамического HTML, сгенерированного django. Я также использую postgresql и solr для базы данных и индекса поиска, а также кеш-память.

В моем файле django settings.py перечислены 127.0.0.1 и 192.168.0.198 как внутренние IP-адреса. Бэкэнд БД настроен для localhost. Бэкэнды memcached и solr настроены на 127.0.0.1.

Мой файл / etc / hosts выглядит так:

127.0.0.1       localhost localhost
192.168.1.198   localhost
127.0.1.1       jacob-desktop
127.0.0.1       redmine

(Я обращался к своей системе управления проектами Redmine с использованием виртуального хоста на основе имени, пока не установил nginx - для этого он нужен).

Интересно, что доступ к статической домашней странице кажется намного быстрее, чем к последующим страницам, имеющим доступ к DB / memcached / solr.

Большая часть моей путаницы связана с тем, в чем именно заключаются различия между localhost / 192.168.0.198 / 127.0.0.1, как эти различные IP-адреса взаимодействуют с сетевой инфраструктурой (в моем случае, дрянным маршрутизатором dlink). Кроме того, существуют различные системы, такие как solr и postgresql, в которых я не уверен, какие IP-адреса я хочу использовать.

Цель состоит в том, чтобы настроить эти области таким образом, чтобы я был на правильном пути к горизонтальной масштабируемости - это означает, что 127.0.0.1, вероятно, не будет там, где находится мой индекс db / search.

В общих случаях на одной машине лучше использовать lo0 вместо внешнего интерфейса, потому что:

  • MTU Loopback намного выше - 16436
  • Loopback не использует какие-либо аппаратные драйверы, такие как e1000 (Linux) или em0 (FreeBSD)
  • Loopback пропускает некоторые уровни OSI при передаче данных
  • Loopback не использует иногда глючные функции, такие как TSO, LRO и т. Д.
  • Петля всегда активна, даже если ссылка на интерфейсе не работает

У меня нет здесь полного ответа - скорее несколько намеков на то, с чего бы я начал искать ...

Обычно доступ к вашему собственному IP-адресу не передается по сети, например ваш роутер не должен быть задействован. Может быть задействован обратный поиск, но, похоже, он обрабатывается через ваш файл hosts ...

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

Также вы можете попробовать, если

route
route -n

дают некоторые временные результаты - например, первая команда выполняет обратный поиск, вторая - нет.

Что не кажется вашей проблемой, но связано:

У меня были проблемы со скоростью, когда IP-адрес не разрешался - например, может помочь либо обратный поиск DNS, либо соответствующий файл / etc / hosts. Причина в этом случае обычно заключается в некотором журналировании, в котором выполняется поиск имени хоста, время ожидания которого истекает, когда DNS не может быть разрешен. Это особенно характерно для ssh-логинов на машинах, на которых адрес клиента (точнее: имя) не может быть разрешен.