Отказ DNS требует времени - PullRequest
       5

Отказ DNS требует времени

3 голосов
/ 08 октября 2010

У меня есть веб-сервис C # на IIS, действующий как прокси. Моя проблема заключается в том, что при изменении IP-адреса одного из внутренних серверов кэш DNS-окна Windows корректно обновляется (проверяется с помощью nslookup), но служба продолжает выполнять некоторые запросы на старый IP-адрес в течение примерно 40 минут.

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

Есть идеи?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 04 февраля 2012

Попробуйте установить это на своем сервере. Web.config:

<configuration> 
   <system.webServer> 
      <httpProtocol allowKeepAlive="false" /> 
   </system.webServer> 
</configuration>

Это говорит серверу, что не может отправить обратно Connection: Keep-Alive заголовок .Новые соединения создаются для каждого запроса, и это как-то заставляет его обновляться до нового IP.Если Keep Alive оставлен включенным, он будет продолжать это общее соединение со старым IP в течение длительного времени.

0 голосов
/ 09 октября 2010

Если вы используете что-то, построенное на компонентах Windows http, вы обнаружите, что этот компонент зависит от разрешенного IP-адреса в качестве «оптимизации» производительности.Как только у него будет совпадение имени / ip, оно будет висеть на нем буквально ДНИ.Он полностью игнорирует TTL.

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

Это известная проблема.Менеджер программ MS "вроде" признается в этом.Но это никогда не было исправлено.

Мы написали нашу собственную замену.

0 голосов
/ 08 октября 2010

Вы пытались установить отрицательный тайм-аут кэша на ноль? Я знаю, что вы сказали, что DNS-кэш правильно обновлен, но если вы нажмете на него хотя бы один раз, когда он устарел, вы можете застрять на старом IP, пока он не истечет.

В Windows XP вы устанавливаете его в реестре как:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ DNSCache \ Parameters DWORD: MaxNegativeCacheTtl Значение: 0

Не играл с этим в Vista или Windows 7.

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

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