localhost에서 실행되는 Envoy 프록시는 컬에서는 잘 작동하지만 golang "hey" 도구에서는 시간 초과됩니다.

localhost에서 실행되는 Envoy 프록시는 컬에서는 잘 작동하지만 golang "hey" 도구에서는 시간 초과됩니다.

나는 몇 가지 Envoy 튜토리얼을 살펴보고 있습니다(그것이 무엇인지 모른다면 아마도 중요하지 않을 것입니다). 저는 Ubuntu VM(Windows 11 호스트)과 회사 방화벽 뒤에서 이 작업을 수행하고 있습니다.

특정 버전의 Envoy를 동적으로 설치하고 실행하는 도구인 "func -e" 명령줄을 실행하여 특정 버전의 Envoy를 실행합니다. 출력에는 포트 10000에서 수신 대기 중임을 표시합니다.

다른 셸에서 " "를 실행 curl http://localhost:10000하면 Envoy 프록시의 예상 출력이 반환됩니다.

동일한 셸에서 간단한 로드 테스트 도구인 "hey"라는 golang 도구를 사용해 보았습니다. 액세스하려는 URL을 제공하면 결과가 반환됩니다. 이 예에서는 다음과 같은 간단한 구성으로 실행합니다.

hey -n 1 -c 1 http://localhost:10000

이는 작업자에게 요청을 보내는 것을 의미합니다. 이는 사전 구성된 20초 시간 초과 후에 시간 초과됩니다.

먼저 VPN에서 노트북 연결을 끊고 이 테스트를 실행하면 제대로 작동합니다.

문제는 셸의 프록시 설정, 특히 "no_proxy" 변수와 관련이 있는 것 같습니다. 쉼표로 구분된 목록에는 "localhost"와 "127.0.0.1"이 있습니다(만약 "NO_PROXY" 변수의 값이 동일한 경우).

답변1

중요한 경우 문제를 해결할 수 있었습니다. 어떤 이유로 가상 머신에 완전히 빈 /etc/hosts 파일이 있습니다. localhost에 대한 항목을 추가하고 나면 "hey"가 제대로 작동했습니다. 나는 "curl"이 이것에 아무런 문제가 없다는 것이 이상하다고 생각합니다.

관련 정보