메모리 한도 구성

Knative serving에서 컨테이너 인스턴스가 사용하는 메모리의 한도를 설정하는 방법을 알아봅니다.

메모리 사용량 이해

허용된 메모리 한도를 초과하는 Knative serving 컨테이너 인스턴스가 종료됩니다.

컨테이너 인스턴스의 사용 가능한 메모리 계산에는 다음이 포함됩니다.

  • 애플리케이션 실행 파일 실행(실행 파일이 메모리에 로드되어야 함)
  • 애플리케이션 프로세스에 메모리 할당
  • 파일 시스템에 파일 쓰기

배포된 컨테이너 이미지의 크기는 사용 가능한 메모리 계산에 포함되지 않습니다.

최대 메모리 용량

구성 가능한 최대 메모리 용량은 GKE 클러스터의 구성에 따라 제한됩니다.

메모리 최적화

(스탠딩 메모리) + (요청별 메모리) * (서비스 동시 실행)을 사용하여 서비스의 최대 메모리 요구사항을 확인할 수 있습니다.

즉, 다음 사항에 주의하세요.

  • 서비스의 동시 실행 횟수를 늘리면 최대 사용량에 고려해야 할 메모리 한도도 늘려야 합니다.

  • 서비스의 동시 실행 횟수를 줄일 경우 메모리 사용 비용을 절약하기 위해 메모리 한도를 줄이는 것이 좋습니다.

요청별 메모리 용량 최소화에 대한 자세한 내용은 전역 변수 개발 팁을 참조하세요.

메모리 한도 설정 및 업데이트

구성을 변경하면 새 버전이 생성됩니다. 이를 변경하는 명시적 업데이트가 없으면 이후 버전에도 이 구성 설정이 자동으로 적용됩니다.

서비스를 배포하거나 기존 서비스를 업데이트하고 버전을 배포하는 경우 Google Cloud 콘솔, Google Cloud CLI 또는 YAML 파일을 사용하여 메모리 한도를 설정할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Knative serving으로 이동합니다.

    Knative serving으로 이동

  2. 배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하려면 해당 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.

  3. 고급 설정에서 컨테이너를 클릭합니다.

  4. 메모리 할당 드롭다운 목록에서 원하는 메모리 크기를 선택합니다.

  5. 다음을 클릭하여 다음 섹션으로 진행합니다.

  6. 이 서비스가 트리거되는 방식 구성 섹션에서 서비스를 호출하는 데 사용할 연결을 선택합니다.

  7. 만들기를 클릭하여 Knative serving에 이미지를 배포하고 배포가 완료될 때까지 기다립니다.

명령줄

  • 기존 서비스의 경우 --memory 매개변수로 gcloud run services update 명령어를 실행하여 메모리 한도를 업데이트합니다.

    gcloud run services update SERVICE --memory SIZE
    

    다음과 같이 바꿉니다.

    • SERVICE를 서비스 이름으로 바꿉니다.
    • SIZE를 원하는 메모리 크기로 바꿉니다. 크기 형식은 고정 소수점 수 또는 부동 소수점 수 뒤에 각각 기가바이트, 메가바이트, 킬로바이트를 의미하는 G, M, K라는 기호를 사용하거나 이진 단위인 Gi, Mi, Ki(각각 기비바이트, 메비바이트, 키비바이트)를 사용합니다.
  • 새 서비스의 경우 --memory 매개변수로 gcloud run deploy 명령어를 실행하여 메모리 한도를 설정합니다.

    gcloud run deploy SERVICE --image=IMAGE_URL --memory SIZE
    

    다음과 같이 바꿉니다.

    • SERVICE를 서비스 이름으로 바꿉니다.
    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/cloudrun/hello)로 바꿉니다.
    • SIZE를 원하는 메모리 크기로 바꿉니다. 크기 형식은 고정 소수점 수 또는 부동 소수점 수 뒤에 각각 기가바이트, 메가바이트, 킬로바이트를 의미하는 G, M, K라는 기호를 사용하거나 이진 단위인 Gi, Mi, Ki(각각 기비바이트, 메비바이트, 키비바이트)를 사용합니다.

YAML

--format=export 플래그를 사용하여 gcloud run services describe 명령어로 YAML 파일에 기존 서비스 구성을 다운로드할 수 있습니다. 그런 다음 gcloud run services replace 명령어로 YAML 파일을 수정하고 변경사항을 배포할 수 있습니다. 지정된 속성만 수정해야 합니다.

  1. 서비스 구성을 로컬 작업공간의 service.yaml 파일에 다운로드합니다.

    gcloud run services describe SERVICE --format export > service.yaml

    SERVICE를 Knative serving 서비스의 이름으로 바꿉니다.

  2. 로컬 파일에서 memory 속성을 업데이트합니다.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE_NAME
    spec:
      template:
        spec:
          containers:
    image: IMAGE_URL
            resources:
              limits:
                memory: SIZE

    SIZE를 원하는 메모리 크기로 바꿉니다. 형식은 고정 소수점 수 또는 부동 소수점 수 뒤에 각각 기가바이트, 메가바이트, 킬로바이트를 의미하는 G, M, K라는 기호를 사용하거나 이진 단위인 Gi, Mi, Ki(각각 기비바이트, 메비바이트, 키비바이트)를 사용합니다.

  3. 다음 명령어를 사용하여 서비스를 새 구성으로 바꿉니다.

    gcloud run services replace service.yaml