gRPC 데드라인 없이 하위 서비스 하나가 느려지면 전체가 멈출까?
gRPC 호출은 데드라인을 걸지 않으면 응답이 올 때까지 기다리고, 하위 서비스 하나가 느려지면 기다리는 호출이 작업 스레드를 붙잡아 상관없는 요청까지 늦어집니다. Python gRPC로 A→B→C 호출 체인을 만들어 데드라인 없음과 남은 시간 전파를 비교하고, 남은 시간을 넘기지 않을 때 하위 서비스에 남는 작업을 확인합니다.
@Hong2026-10-01조회 243
gRPC 호출은 데드라인을 걸지 않으면 응답이 올 때까지 기다리고, 하위 서비스 하나가 느려지면 기다리는 호출이 작업 스레드를 붙잡아 상관없는 요청까지 늦어집니다. Python gRPC로 A→B→C 호출 체인을 만들어 데드라인 없음과 남은 시간 전파를 비교하고, 남은 시간을 넘기지 않을 때 하위 서비스에 남는 작업을 확인합니다.
gRPC는 HTTP/2 연결 하나에 요청을 계속 실어 보내서, 연결 단위로 나누는 L4 로드밸런서 뒤에서는 서버를 늘려도 요청이 한 대에 몰립니다. gRPC 서버 세 대와 NGINX stream 프록시로 쏠림을 재현하고, round_robin과 max_connection_age로 다시 나뉘는 과정을 확인합니다.