2011-10-09 3 views
0

현재 내 자신의 HTTP 프록시를 작성하는 중입니다. 나는 코드가 작동하지만 ApacheBench를 사용하여 테스트 해 보았습니다. 다음과 같은 메시지가 나타날 때마다 :getaddrinfo 문제

"getaddrinfo : 호스트 이름이 en.wikipedia이거나 노드 이름이 알려져 있지 않습니다. org service 80 "

호스트 이름과 포트가 전달되는 곳에서이 함수 호출이 실패해야하는 이유는 없습니다.

저는 이것을 해결할 수있는 다양한 방법을 온라인에서 찾았으므로 아무런 유용성을 발견하지 못했습니다.

누구에게 아이디어가 있습니까?

편집 내 응용 프로그램 내에 DNS 캐싱 시스템을 구현하여이 문제를 해결했습니다.

답변

2

해상도 스택에서 무언가 만들었던 쿼리의 양을 처리하지 못했을 수 있습니까?

/etc/nsswitch.conf으로 시작하고 시스템에서 쿼리가 어떻게 해결되는지 확인해야합니다. 어떤 시점에서 결국에는 로컬 DNS 캐시에 도달하게되며, 동시에 너무 많은 쿼리가있을 경우 시간이 초과 될 수 있습니다.

DNS 캐시를 프록시 (예 : Squid는 해당) 또는 lwresd와 같이 로컬로 실행해야 할 수도 있습니다.

+0

+1 : DNS 서버 또는 UDP 스택에 과부하가 걸리기 쉽습니다. 또한 서비스 거부 공격을 방지하기 위해 많은 DNS 서버가 IP 당 속도 제한기를 사용하므로 하나의 IP로 시스템에 과부하가 걸리지 않습니다. –

0

C-ares와 같은 비동기 DNS 해결 라이브러리를 사용하는 것이 좋습니다. 그렇지 않으면 당신은 빨리 표준 해상도가 당신의 성과를 죽이는 방법을 발견하게 될 것입니다.

관련 문제