powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Параметр negative.ttl не работает
20 сообщений из 20, страница 1 из 1
Параметр negative.ttl не работает
    #39127636
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть следующий код (вставлен в тело main):
Код: java
1.
2.
3.
4.
5.
6.
7.
Security.setProperty("networkaddress.cache.negative.ttl", "30000");
System.setProperty("sun.net.inetaddr.negative.ttl", "30000");
while(true){
long time = System.currentTimeMillis();
InetAddress ip = InetAddress.getByName("10.0.161.152");
System.err.println(ip.getCanonicalHostName() + "; Ellapsed time: " + (System.currentTimeMillis() - time) + " ms");
}



В результате его работы получаю следующий вывод в консоль:
System.err10.0.161.152; Ellapsed time: 9090 ms
10.0.161.152; Ellapsed time: 9094 ms

В DNS действительно такой записи нет:
cmdnslookup 10.0.161.152
Server: xxx.xxxx.ru
Address: x.x.x.x

DNS request timed out.
timeout was 2 seconds.
*** Request to xxxx.xxxx.ru timed-out

Вопрос - почему не происходит кэширования негативного ответа? Или я неправильно понимаю смысл данного параметра?
(поведение одинаковое на J9VM и на HotSpot Java 8)
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39127651
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня работает в Java 8

Код: java
1.
2.
10.0.161.152; Ellapsed time: 10 ms
10.0.161.152; Ellapsed time: 0 ms
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39127654
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimir,

Хотя, нет. Картина не зависит от значения, даже если отключить кэш, то же самое.
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39127662
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже что это из-за reverse lookup. Потому что ты сразу IP туда вбиваешь. Я попробовал с несуществующим именем, тогда есть разница.
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39127665
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
а если пишете nslookup в cmd?
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39127674
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirBlazkowicz,
а если пишете nslookup в cmd?
Не понял вопроса. Первичная задача DNS это находить IP по имени хоста. Обратная задача, находить домена по IP адресу она не на всех серверах настроена и обладает кучей нюансов.
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39127681
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
интересует обратная задача reverse lookup, вопрос в том, какой будет ответ в вашем окружении, если напишете в винде в cmd.exe строчку nslookup несуществующий_ип_адрес ?
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39127686
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimir,

Код: java
1.
2.
3.
4.
Сервер:  UnKnown
Address:  192.168.0.1

*** UnKnown не удалось найти 10.0.161.152: Non-existent domain
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39127725
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
а ответ получаете так же моментально?

А так действительно, посмотрел по реализации InetAddress и там кэшируется только forward lookup'ы, а reverse (по сути вызов getCanonicalHostName) всегда лезет в nameService, собственно на нем и висит 4 секунды, пока не выкинется Exception. Видимо надо решать настройками ОС.
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39127778
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вдруг, кто столкнется, то в общем разобрал ситуацию. Запустил ProcMon, увидел, что в native стеке вызывается gethostbyaddr function из Ws2_32.dll ( https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms738521(v=vs.85).aspx), про которую написано в MSDN, что она еще способна возвращать NetBIOS name и действительно его отключение мне помогло. Ответ получаю в пределах 10 ms.
При этом MSDN говорит, что кошерно пользоваться функцией getnameinfo https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms738532(v=vs.85).aspx
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39128057
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirВидимо надо решать настройками ОС.Нет - не надо делать обратных запросов (адрес -> имя) кроме тех случаев, когда вы точно знаете что делаете.
Если вы точно знаете, что делаете, то случаев таких и не остаётся.
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39128161
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНет - не надо делать обратных запросов (адрес -> имя) кроме тех случаев, когда вы точно знаете что делаете.
Если вы точно знаете, что делаете, то случаев таких и не остаётся.
Отлично, так и напишу в саппорт IBM, как думаете в следующем фикс паке на WebSphere Portal уберут эти вызовы? )) В своем коде таких вызовов не практикую.

А если серьезно, то похоже это нюанс работы с InetAddress, очень походит на то, что если хранить имя хоста не строкой, а этим классом, то при создании мы будем иметь форвард, а при любых последующих вызовах методов вида getXXXName он каждый раз будет честно выполнять реверс запросы.
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39128349
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirА если серьезно, то похоже это нюанс работы с InetAddress, очень походит на то, что если хранить имя хоста не строкой, а этим классом This class represents an Internet Protocol (IP) address .
Как вы собрались "хранить имя хоста" в классе, который хранит IP-адрес???
Вы вообще в курсе, что "имя -> адрес -> имя" может, а очень часто - будет выдавать совсем не то, что было подано на вход? Это даже если не касаться ситуации "одно имя разрешается в несколько адресов".
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39128360
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovКак вы собрались "хранить имя хоста" в классе, который хранит IP-адрес???
Вы вообще в курсе, что "имя -> адрес -> имя" может, а очень часто - будет выдавать совсем не то, что было подано на вход? Это даже если не касаться ситуации "одно имя разрешается в несколько адресов".
Смысл в том, что даже если в InetAddress тупо скормить IP, всё равно получишь DNS lookup. Я натыкался на такое недавно. Сейчас поищу.
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39128365
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimir,

В Guava есть классы для хранения адресов и имён, которые DNS не трогают.
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39128384
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39128396
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСмысл в том, что даже если в InetAddress тупо скормить IP, всё равно получишь DNS lookup. Я натыкался на такое недавно. Сейчас поищу.
Не. Похоже я гоню. Вроде нормально работает. Странно.
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39128402
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovКак вы собрались "хранить имя хоста" в классе, который хранит IP-адрес???
Вы вообще в курсе, что "имя -> адрес -> имя" может, а очень часто - будет выдавать совсем не то, что было подано на вход? Это даже если не касаться ситуации "одно имя разрешается в несколько адресов".
Я ничего не собрался хранить, у меня проблема, что в IBM WebSphere Portal есть вызовы getCanonicalHostName, а в некоторых случаях даже по нескольку раз на каждое построение страницы.

Basil A. Sidorov If this InetAddress was created with a host name, this host name will be remembered and returned; otherwise, a reverse name lookup will be performed
По горячился, так себя ведет только getCanonicalHostName


Blazkowiczjust_vladimir,
В Guava есть классы для хранения адресов и имён, которые DNS не трогают.
Ага, буду иметь в виду, если понадобится.
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39128437
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirв IBM WebSphere Portal есть вызовы getCanonicalHostNameВызовы делаются на собственные адреса (имена) или для адресов клиента?
Если первое, то правильно настроенный DNS - must have. Тогда и проблем не будет.
Если второе - то это клиника и надо заводить багу.
...
Рейтинг: 0 / 0
Параметр negative.ttl не работает
    #39128444
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovjust_vladimirв IBM WebSphere Portal есть вызовы getCanonicalHostNameВызовы делаются на собственные адреса (имена) или для адресов клиента?
Если первое, то правильно настроенный DNS - must have. Тогда и проблем не будет.
Если второе - то это клиника и надо заводить багу.
второе
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Параметр negative.ttl не работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]