push 큐 만들기

이 페이지에서는 push 큐를 만들고 맞춤설정하는 방법과 큐의 콘텐츠를 검사하는 방법을 설명합니다.

큐 구성 파일을 사용하여 큐 만들기

태스크를 처리하려면 push 큐에 추가해야 합니다. App Engine은 default라고 하는 기본 push 큐를 제공하며 이 큐는 기본 설정으로 구성되어 바로 사용할 수 있습니다. 원하는 경우 다른 큐를 만들고 구성할 필요 없이 모든 태스크를 기본 큐에 추가할 수 있습니다.

큐를 추가하거나 기본 구성을 변경하려면 App Engine에 업로드할 애플리케이션의 큐 구성 파일을 수정합니다. 큐를 최대 100개까지 만들 수 있습니다. 큐를 동적으로 만들 수 없습니다.

이 큐 구성 파일은 다음과 같이 두 개의 큐를 정의합니다.

queue:
- name: queue-blue
  target: v2.task-module
  rate: 5/s

- name: queue-red
  rate: 1/s

파일을 업로드하려면 다음을 사용하세요.

gcloud app deploy queue.yaml

queue-blue에 추가된 모든 태스크는 대상 모듈 v2.task-module로 전송됩니다. queue-red의 새로고침 빈도가 초당 5회에서 초당 1회로 바뀝니다. 태스크가 큐에서 제외되고 초당 1개의 태스크 속도로 대상에 전송됩니다.

큐를 삭제한 후 동일한 이름으로 큐를 새로 만들려면 약 7일을 기다려야 합니다.

push 큐의 동작을 맞춤설정하기 위해 구성 파일에 추가할 수 있는 다른 매개변수가 많이 있습니다. 자세한 내용은 큐 구성 파일 참조를 확인하세요.

push 큐 처리 속도 정의

rate, bucket_size, max_concurrent_requests와 같은 다른 지시문을 정의하여 각 큐에서 태스크가 처리되는 속도를 제어할 수 있습니다.

태스크 큐는 토큰 버킷을 사용하여 태스크 실행 속도를 제어합니다. 이름이 지정된 각 큐에는 토큰이 bucket_size에서 지정한 최댓값까지 또는 버킷 크기를 지정하지 않은 경우 최대 5개까지 포함된 토큰 버킷이 있습니다.

애플리케이션이 태스크를 실행할 때마다 토큰이 버킷에서 삭제됩니다. 애플리케이션은 큐의 버킷에서 토큰이 없어질 때까지 큐의 태스크를 계속 처리합니다. App Engine은 큐에 지정한 rate에 따라 버킷에 새 토큰을 계속 채웁니다.

큐에 처리할 작업이 있고 큐의 버킷에 토큰이 있으면 App Engine은 토큰과 같은 개수의 태스크를 동시에 처리합니다. 이로 인해 처리량이 급증하고 시스템 리소스가 소모되어 사용자를 지원하는 요청과 경합할 수 있습니다.

한 번에 너무 많은 태스크가 실행되지 않도록 하거나 Datastore 경합을 방지하려면 max_concurrent_requests를 사용합니다.

다음 샘플은 태스크를 제한하도록 max_concurrent_requests를 설정하는 방법과 애플리케이션 니즈와 사용 가능한 리소스에 따라 버킷 크기와 속도를 조정하는 방법을 보여줍니다.

queue:
- name: queue-blue
  rate: 20/s
  bucket_size: 40
  max_concurrent_requests: 10

모든 큐의 스토리지 한도 설정

큐 구성 파일을 사용하여 태스크 데이터가 모든 큐에서 사용할 수 있는 총 스토리지를 정의할 수 있습니다. 총 스토리지 한도를 정의하려면 최상위 수준에 total_storage_limit라고 하는 요소를 포함합니다.

# Set the total storage limit for all queues to 120MB
total_storage_limit: 120M
queue:
- name: queue-blue
  rate: 35/s

값은 숫자 뒤에 단위가 표시됩니다. B는 바이트, K는 킬로바이트, M는 메가바이트, G는 기가바이트, T는 테라바이트입니다. 예를 들어 100K는 100킬로바이트의 한도를 지정합니다. 태스크 추가로 인해 큐가 스토리지 한도를 초과하게 되는 경우 태스크를 추가하기 위한 호출이 실패합니다. 무료 앱의 기본 한도는 500M(500메가바이트)입니다. 결제가 설정된 앱은 명시적으로 한도를 설정하지 않으면 한도가 없습니다. 한도를 사용하면 각 태스크가 실행 중에 여러 개의 다른 태스크를 추가하는 포크 폭탄(fork bomb) 프로그래밍 오류로부터 앱을 보호할 수 있습니다.

태스크를 추가할 때 할당량 부족으로 앱에서 오류를 수신하는 경우 총 스토리지 한도를 늘리면 도움이 됩니다. 이 기능을 사용할 때는 반드시 며칠 분량의 태스크에 필요한 스토리지에 해당하는 한도를 설정하는 것이 좋습니다. 이렇게 하면 큐가 임시로 백업되고 백로그를 통해 작업하면서 새로운 태스크를 계속 받을 수 있는 동시에 포크 폭탄 프로그래밍 오류로부터도 보호됩니다.

Google Cloud 콘솔에서 큐 모니터링

  1. Google Cloud Console에서 Cloud Tasks 페이지로 이동합니다.

    Cloud Tasks로 이동

    App Engine 태스크 큐 페이지로 이동하면 Cloud Tasks 페이지를 안내하는 지침이 있습니다. Google Cloud Console의 이 업데이트는 태스크 큐의 작동 방식을 변경하지 않습니다.

  2. Cloud Tasks API를 사용 설정합니다.

  3. Cloud Tasks 페이지로 이동하면 애플리케이션의 모든 큐 목록이 표시됩니다. 큐 이름을 클릭하면 선택한 큐의 모든 태스크를 보여주는 큐 세부정보 페이지가 열립니다.

다음 단계

태스크 만들기 알아보기