getaddrinfo Проблемы - PullRequest
       17

getaddrinfo Проблемы

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

В настоящее время я работаю над написанием своего собственного HTTP-прокси. У меня работает код, но я попытался провести его стресс-тестирование с помощью ApacheBench и обнаружил, что время от времени я получаю сообщение, такое как:

"getaddrinfo: имя узла или имя сервера указано или неизвестно для хоста en.wikipedia.org service 80"

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

Я искал в Интернете различные способы решения этой проблемы и не нашел ничего полезного.

У кого-нибудь есть идеи?

1012 * редактировать * Решил эту проблему, внедрив в мое приложение систему кеширования DNS.

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

Может быть, что-то в вашем стеке разрешений не может принять объем запросов, которые вы делали?

Вам нужно начать с /etc/nsswitch.conf и посмотреть, как запросы разрешаются в вашей системе.В какой-то момент вы в конечном итоге доберетесь до локального кэша DNS, который также может истечь, если на него слишком много запросов одновременно.

Возможно, вам потребуется запустить кэш DNS либо в прокси-сервере.(Squid делает, например) или локально, например, с lwresd.

0 голосов
/ 10 октября 2011

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

...