2.3. 동시성
동시성은 언제든지 애플리케이션의 각 복제본에서 처리할 수 있는 동시 요청 수를 결정합니다. 동시성은 소프트 제한 또는 하드 제한 으로 구성할 수 있습니다.
- 소프트 제한은 엄격하게 적용된 바인딩이 아닌 대상 요청 제한입니다. 예를 들어 트래픽이 급증하는 경우 소프트 제한 대상을 초과할 수 있습니다.
하드 제한은 엄격하게 적용되는 상한 요청 제한입니다. 동시성이 하드 제한에 도달하면 surplus 요청이 버퍼링되고 요청을 실행할 수 있는 여유 용량이 충분할 때까지 기다려야 합니다.
중요하드 제한 구성을 사용하는 것이 애플리케이션과 관련된 명확한 사용 사례가 있는 경우에만 사용하는 것이 좋습니다. 낮은 하드 제한을 지정하면 애플리케이션의 처리량 및 대기 시간에 부정적인 영향을 미칠 수 있으며 콜드 시작이 발생할 수 있습니다.
소프트 대상 및 하드 제한을 추가하면 자동 스케일러가 동시 요청의 소프트 대상 수를 대상으로 하지만 최대 요청 수에 대한 하드 제한 값의 하드 제한을 적용합니다.
하드 제한 값이 소프트 제한 값보다 작으면 실제로 처리할 수 있는 수보다 더 많은 요청을 대상으로 할 필요가 없기 때문에 소프트 제한 값이 조정됩니다.
2.3.1. 소프트 동시성 대상 구성
소프트 제한은 엄격하게 적용된 바인딩이 아닌 대상 요청 제한입니다. 예를 들어 트래픽이 급증하는 경우 소프트 제한 대상을 초과할 수 있습니다. 사양에서 autoscaling.knative.dev/target
주석을 설정하거나 올바른 플래그와 함께 kn service
명령을 사용하여 Knative 서비스에 대한 소프트 동시성 대상을 지정할 수 있습니다.
절차
선택 사항:
Service
사용자 정의 리소스의 사양에 Knative 서비스의autoscaling.knative.dev/target
주석을 설정합니다.서비스 사양의 예
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: example-service namespace: default spec: template: metadata: annotations: autoscaling.knative.dev/target: "200"
선택 사항:
kn service
명령을 사용하여--concurrency-target
플래그를 지정합니다.$ kn service create <service_name> --image <image_uri> --concurrency-target <integer>
요청 수가 50개인 동시성 대상을 사용하여 서비스를 생성하는 예
$ kn service create example-service --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest --concurrency-target 50
2.3.2. 하드 동시성 제한 구성
하드 동시성 제한은 엄격하게 적용되는 상한 요청 제한입니다. 동시성이 하드 제한에 도달하면 surplus 요청이 버퍼링되고 요청을 실행할 수 있는 여유 용량이 충분할 때까지 기다려야 합니다. containerConcurrency
사양을 수정하거나 올바른 플래그와 함께 kn service
명령을 사용하여 Knative 서비스에 대한 하드 동시성 제한을 지정할 수 있습니다.
절차
선택 사항:
Service
사용자 정의 리소스의 사양에 Knative 서비스의containerConcurrency
사양을 설정합니다.서비스 사양의 예
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: example-service namespace: default spec: template: spec: containerConcurrency: 50
기본값은
0
입니다. 즉, 한 번에 하나의 서비스 복제본으로 전달될 수 있는 동시 요청 수에 대한 제한이 없음을 의미합니다.값이
0
보다 크면 한 번에 하나의 서비스 복제본으로 전달될 수 있는 정확한 요청 수를 지정합니다. 이 예제에서는 하드 동시성 제한을 50개의 요청으로 활성화합니다.선택 사항:
kn service
명령을 사용하여--concurrency-limit
플래그를 지정합니다.$ kn service create <service_name> --image <image_uri> --concurrency-limit <integer>
50개의 요청의 동시성 제한이 있는 서비스를 생성하는 명령의 예
$ kn service create example-service --image quay.io/openshift-knative/knative-eventing-sources-event-display:latest --concurrency-limit 50
2.3.3. 동시성 대상 사용
이 값은 실제로 자동 스케일러가 대상으로 하는 동시성 제한의 백분율을 지정합니다. 이는 정의된 하드 제한에 도달하기 전에 자동 스케일러를 확장할 수 있는 복제본이 실행되는 핫 스를 지정하는이라고도 합니다.
예를 들어 containerConcurrency
값이 10으로 설정되고 target-utilization-percentage
값이 70%로 설정된 경우 기존 복제본의 평균 동시 요청 수가 7에 도달하면 자동 스케일러는 새 복제본을 생성합니다. 7~10 사이의 요청은 기존 복제본으로 계속 전송되지만 containerConcurrency
값에 도달한 후 필요한 항목이 예상되어 추가 복제본이 시작됩니다.
target-utilization-percentage 주석을 사용하여 구성된 서비스의 예
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: example-service namespace: default spec: template: metadata: annotations: autoscaling.knative.dev/target-utilization-percentage: "70" ...