Cloud Run 서비스에서 각 버전은 모든 수신 요청을 처리하는 데 필요한 인스턴스 수에 맞게 자동으로 확장됩니다.
요청을 처리하는 인스턴스 수가 늘어나면 CPU와 메모리 사용량이 늘어나 비용이 증가합니다.
Cloud Run은 보다 세밀하게 제어할 수 있도록 지정된 인스턴스에서 동시에 처리 가능한 최대 요청 수를 지정하는 인스턴스당 최대 동시 요청 수 설정을 제공합니다.
인스턴스당 최대 동시 요청 수
인스턴스당 최대 동시 요청 수를 구성할 수 있습니다. 기본적으로 각 Cloud Run 인스턴스는 요청을 동시에 최대 80개까지 수신할 수 있습니다. 최대 1000까지 늘릴 수 있습니다.
기본 값을 사용해야 하지만, 필요한 경우 최대 동시 실행 값을 낮출 수 있습니다. 예를 들어 코드가 동시 요청을 처리할 수 없으면 동시 실행을 1
로 설정합니다.
지정된 동시 실행 값은 최댓값이며, 인스턴스의 CPU가 이미 많이 사용되는 경우 Cloud Run은 지정된 인스턴스에 많은 요청을 보내지 못할 수 있습니다.
다음 다이어그램은 인스턴스당 최대 동시 요청 수 설정이 수신되는 동시 요청을 처리하는 데 필요한 인스턴스 수에 어떻게 영향을 미치는지 보여줍니다.
최대 동시 실행을 한 번에 하나의 요청으로 제한해야 하는 경우
한 번에 하나의 요청만 실행 중인 각 인스턴스에 전송되도록 동시 실행을 제한할 수 있습니다. 다음과 같은 경우에 동시 실행 제한을 고려해야 합니다.
- 각 요청 실행 시 사용 가능한 CPU 또는 메모리 대부분이 사용됩니다.
- 컨테이너가 두 요청이 공유할 수 없는 전역 상태에 있는 경우와 같이 컨테이너 이미지가 여러 요청을 동시에 처리하도록 설계되지 않았습니다.
수신 요청의 급증을 처리하기 위해 많은 인스턴스가 시작되어야 하기 때문에 동시 실행 값이 1
이면 확장 성능에 부정적인 영향을 미칠 가능성이 높습니다.
우수사례
다음 측정항목에서는 클라이언트 400개가 인스턴스당 최대 동시 요청이 1로 설정된 Cloud Run 서비스로 요청을 초당 3개 보내는 사용 사례를 보여줍니다. 위쪽의 녹색 선은 시간에 경과에 따른 요청 횟수를 나타내고, 아래쪽의 파란색 선은 요청을 처리하기 위해 시작된 인스턴스 수를 나타냅니다.
다음 측정항목은 400개의 클라이언트가 인스턴스당 최대 동시 요청이 80개로 설정된 Cloud Run 서비스에 대해 초당 3개의 요청을 수행하는 것을 보여줍니다. 위쪽의 녹색 선은 시간에 경과에 따른 요청 횟수를 나타내고, 아래쪽의 파란색 선은 요청을 처리하기 위해 시작된 인스턴스 수를 나타냅니다. 동일한 요청 볼륨을 처리하는 데 필요한 인스턴스 수가 훨씬 더 적게 필요한 것을 볼 수 있습니다.
소스 코드 배포의 동시 실행
동시 실행이 사용 설정되면 Cloud Run은 동일한 인스턴스에서 처리되는 동시 요청 간에 격리를 제공하지 않습니다. 이러한 경우 코드를 동시에 안전하게 실행할 수 있는지 확인해야 합니다. 다른 동시 실행 값을 설정하여 이를 변경할 수 있습니다. 8과 같이 낮은 동시 실행으로 시작하여 늘리는 것이 좋습니다. 동시 실행이 너무 높으면 리소스 제약조건 (예: 메모리 또는 CPU)으로 인해 의도하지 않은 동작이 발생할 수 있습니다.
언어 런타임도 동시 실행에 영향을 줄 수 있습니다. 이러한 언어별 영향 중 일부는 다음 목록에 나와 있습니다.
Node.js는 기본적으로 단일 스레드로 구성됩니다. 동시 실행을 활용하려면 Node.js에서 일반적으로 사용되는 JavaScript의 비동기 코드 스타일을 사용합니다. 자세한 내용은 공식 Node.js 문서의 비동기 흐름 제어를 참고하세요.
Python 3.8 이상에서는 인스턴스당 높은 동시 실행을 지원하려면 동시 실행을 처리할 만큼 충분한 스레드가 필요합니다. 스레드 값이 동시 실행 값과 같도록 런타임 환경 변수를 설정하는 것이 좋습니다(예:
THREADS=8
).
다음 단계
Cloud Run 서비스의 인스턴스당 최대 동시 요청 수를 관리하려면 인스턴스당 최대 동시 요청 수 설정을 참조하세요.
인스턴스당 최대 동시 요청 수 설정을 최적화하려면 동시 실행 조정을 위한 개발 팁을 참조하세요.