Go의 http.Get, 동시성 및 피어에 의한 연결 재설정
질문:
효율적인 웹 페이지 다운로드를 위해 Go 루틴과 채널을 활용하는 동안 일부 요청이 실패하는 이유는 무엇입니까? 다른 대륙에 있는 서버에서 실행할 때 "피어에 의한 연결 재설정" 오류가 발생합니까?
답변:
"피어에 의한 연결 재설정" 오류는 원격 서버가 리소스 제한 또는 과도한 연결 시작으로 인해 고의 또는 비자발적으로 연결을 종료했습니다. 이 문제를 해결하려면:
1. 동시성 수준 최적화:
수많은 병렬 연결(1000-2000)을 시작하는 대신 다양한 동시성 수준을 실험하여 가장 효율적인 수를 결정합니다. 동시성이 지나치게 높으면 연결이 재설정될 수 있습니다.
2. Transport.MaxIdleConnsPerHost 설정:
Transport.MaxIdleConnsPerHost 값을 동시성 수준에 맞게 구성합니다. 이 값이 동시 연결 수보다 작으면 각 요청 후에 서버 연결이 닫힐 수 있으며 다시 열어야 합니다. 이러한 반복적인 열기 및 닫기 프로세스로 인해 진행 속도가 느려지고 잠재적으로 서버 연결 제한을 초과할 수 있습니다.
3. 연결 시작 지연:
MaxIdleConnsPerHost를 적절하게 설정했음에도 불구하고 문제가 지속되면 서버에서 연결 재설정이 트리거되지 않도록 연결 시작 사이에 약간의 지연을 도입하는 것이 좋습니다.
위 내용은 Go의 `http.Get` 요청이 대륙 전체에서 '피어에 의한 연결 재설정' 오류와 함께 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!