← 질문 목록
#329깊이 0
단계마다 타임아웃을 5초씩 주면 무엇이 잘못되는가?
시간이 더해지기 때문이다. 단계마다 따로 5초를 주면 최악에 15초가 된다. 아래는 그러지 않게 예산을 한 번만 정해 내려보내는 모양이다.
| 순서 | 전체 예산 | 무슨 일 |
|---|---|---|
| 1 | 5초 | 게이트웨이 |
| 2 | 3초 남음 | 서비스 A |
| 3 | 1초 남음 | 서비스 B |
| 4 | 0초 | 사용자에게 오류 |
사용자는 15초를 기다리지 않는다. 그리고 떠난 뒤에도 서버는 계속 돈다. 아무도 안 볼 답을 만드느라 자원을 쓴다.
그래서 시간을 위에서 한 번 정하고 내려보낸다. 각 단계는 남은 만큼만 쓰고, 남은 것이 없으면 아예 시작하지 않는다.
재시도를 붙일 때 특히 그렇다. 남은 시간을 안 보고 재시도하면 예산을 넘긴 채로 계속 두드린다.
취소 신호도 아래 단계까지 전해져야 한다. 사용자가 떠났는데 아래 단계가 계속 도는 것은 그만큼 자원을 버리는 일이다.