![모든 네트워크 홉에서 요청 시간 초과를 설정하는 방법](https://rvso.com/image/782617/%EB%AA%A8%EB%93%A0%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%20%ED%99%89%EC%97%90%EC%84%9C%20%EC%9A%94%EC%B2%AD%20%EC%8B%9C%EA%B0%84%20%EC%B4%88%EA%B3%BC%EB%A5%BC%20%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
네트워크 시간 초과에 대해 알아보고 주어진 요청의 각 홉에 대해 어떻게 설정해야 하는지 알아보고 있습니다. 단순화를 위해 연결 시간 초과, 읽기 시간 초과, 쓰기 시간 초과를 분석하지 않고 "시간 초과"가 "수신된 첫 번째 패킷부터 전송된 마지막 패킷까지 허용되는 최대 총 시간(또는 클라이언트의 경우 그 반대)"을 의미한다고 가정합니다. 요청 흐름에 다음과 같은 홉이 있다고 가정해 보겠습니다.
(client) --> (AWS ALB) --> (nginx) --> (server)
...그리고 내 서버가 10초 후에 시간 초과되도록 설정되어 있다고 가정해 보겠습니다.
내 질문: 모든 홉에 대해 유효한 시간 초과 세트는 무엇입니까? 일 것이다
// A
(client, 13s) --> (AWS ALB, 12s) --> (nginx, 11s) --> (server, 10s)
또는
// B
(client, 7s) --> (AWS ALB, 8s) --> (nginx, 9s) --> (server, 10s)
아니면 (C) 다른 것?
분명히 저는 귀하의 제안 뒤에 숨은 논리에도 관심이 있습니다.
답변1
하드 타임아웃을 보고 있는 경우(목적을 명시하지 않음) 각 처리 단계에는더 적은전보다 시간이 더 남았다. 따라서 기본적으로 A가 올바른 접근 방식입니다.
그러나 클라이언트에서 AWSALB로의 경로는 사용자가 제어할 수 없으며 비교적 길거나 느릴 수 있습니다. 단계당 1초는 매우 관대해 보이므로 문제가 되지 않습니다. 그러나 이를 단계당 50 또는 100ms로 줄이면 첫 번째 단계에 더 많은 할당이 필요합니다.