Пул HttpClientsHttpClientConnectionManager и кэширование DNSJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Пул HttpClientsHttpClientConnectionManager и кэширование DNS

Сообщение Anonymous »

Похоже, у меня возникла проблема, связанная с кэшированием разрешения имен хостов DNS при использовании PoolingHttpClientConnectionManager
У меня есть API, который выполняет вызовы к внешней службе . Эта служба использует пограничное кэширование Akamai, поэтому IP-адрес может измениться. Этот API находится под большой нагрузкой.
У меня установлено максимальное количество подключений 100 для размера пула с потоком таймаута простоя, закрывающим простаивающие соединения после 30 секунд простоя. Но из-за интенсивного трафика я не думаю, что соединения когда-либо простаивают. Таким образом, похоже, что если IP-адрес этого узла службы изменится, мое приложение никогда не уловит это изменение, поскольку все соединения в пуле сохраняют старый IP-адрес, разрешенный DNS.
Я Я проверил эту гипотезу локально, изменив файл /etc/hosts на своем Mac (и очистив кеш ОС). Пока к моему приложению API поступает постоянный трафик, оно никогда не фиксирует изменения, даже если значение TTL равно 5 секундам, установленным в java.security. Я позволил ему работать в течение 20 минут после изменения имени хоста, чтобы оно указывало на неверный IP-адрес, который мог привести к сбою вызовов, и он ни разу не завершился сбоем.
Я остановил трафик JMeter, который отправлял ему. , подождал около 30 секунд и нажал на него вручную, но вызов не удался, сообщив мне, что изменения были приняты.
Есть идеи? Нужно ли мне прекратить использование пула соединений? Или написать свой DnsResolver (не знаю, как он должен работать)? Как я могу гарантировать, что соединения в моем пуле соединений будут обновляться, если запись DNS изменится для этой службы?

Подробнее здесь: https://stackoverflow.com/questions/291 ... ns-caching
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»