Knative serving에서 각 버전은 모든 수신 요청을 처리하는 데 필요한 컨테이너 인스턴스 수에 맞게 자동으로 확장됩니다.
요청을 처리하는 컨테이너 인스턴스 수가 늘어나면 CPU와 메모리 사용량이 늘어나 비용이 증가합니다. 새 컨테이너 인스턴스를 시작할 때는 요청을 처리하는 데 시간이 더 걸릴 수 있으므로 서비스 성능이 저하됩니다.
Knative serving은 보다 세밀하게 제어할 수 있도록 지정된 컨테이너 인스턴스에서 동시에 처리 가능한 최대 요청 수를 지정하는 동시 실행 설정을 제공합니다.
동시 실행 값
기본적으로 Knative serving 컨테이너 인스턴스는 최대 80개의 요청을 동시에 수신할 수 있습니다. 이에 비해 Cloud Run Functions와 같은 FaaS(서비스로서의 기능) 솔루션의 동시 실행 값은 1로 고정되어 있습니다.
기본 동시 실행 값을 사용해야 하지만, 필요한 경우 최대 동시 실행 값을 낮출 수 있습니다. 예를 들어 코드가 동시 요청을 처리할 수 없으면 동시 실행을 1
로 설정합니다.
지정된 동시 실행 값은 최댓값이며, 인스턴스의 CPU가 이미 많이 사용되는 경우 Knative serving은 지정된 컨테이너 인스턴스에 많은 요청을 보내지 못할 수 있습니다.
다음 다이어그램은 동시 실행 설정이 수신되는 동시 실행 요청을 처리하는 데 필요한 컨테이너 인스턴스 수에 어떻게 영향을 미치는지 보여줍니다.
동시 실행을 한 번에 하나의 요청으로 제한해야 하는 경우
한 번에 하나의 요청만 실행 중인 각 컨테이너 인스턴스에 전송되도록 동시 실행을 제한할 수 있습니다. 다음과 같은 경우에 동시 실행 제한을 고려해야 합니다.
- 각 요청 실행 시 사용 가능한 CPU 또는 메모리 대부분이 사용됩니다.
- 컨테이너가 두 요청이 공유할 수 없는 전역 상태에 있는 경우와 같이 컨테이너 이미지가 여러 요청을 동시에 처리하도록 설계되지 않았습니다.
수신 요청의 급증을 처리하기 위해 많은 인스턴스가 시작되어야 하기 때문에 동시 실행 값이 1
이면 확장 성능에 부정적인 영향을 미칠 가능성이 높습니다.
우수사례
다음 측정항목은 400개의 클라이언트가 최대 동시 실행이 1로 설정된 Knative serving 서비스에 대해 초당 3개의 요청을 수행하는 사용 사례를 보여줍니다. 위쪽의 녹색 선은 시간에 경과에 따른 요청 횟수를 나타내고, 아래쪽의 파란색 선은 요청을 처리하기 위해 시작된 컨테이너 인스턴스 수를 나타냅니다.
다음 측정항목은 400개의 클라이언트가 최대 동시 실행이 80으로 설정된 Knative serving 서비스에 대해 초당 3개의 요청을 수행하는 사용 사례를 보여줍니다. 위쪽의 녹색 선은 시간에 경과에 따른 요청 횟수를 나타내고, 아래쪽의 파란색 선은 요청을 처리하기 위해 시작된 컨테이너 인스턴스 수를 나타냅니다. 동일한 요청 볼륨을 처리하는 데 필요한 인스턴스 수가 훨씬 더 적게 필요한 것을 볼 수 있습니다.
다음 단계
Knative serving 서비스의 동시 실행을 관리하려면 동시 실행 설정을 참조하세요.
동시 실행 설정을 최적화하려면 동시 실행 조정을 위한 개발 팁을 참조하세요.