이 페이지에서는 다음 시나리오를 다루면서 Vertex AI Agent Engine 런타임의 성능을 최적화하고 확장하는 방법에 관한 권장사항을 설명합니다.
이 시나리오에서는 배포 매개변수를 사용하여 특히 실제 애플리케이션에서 예측할 수 없는 급증하는 트래픽 패턴의 일반적인 성능 병목 현상을 해결하는 방법을 보여줍니다.
콜드 스타트 문제
콜드 스타트는 요청이 도착했는데 이를 처리할 유휴 인스턴스나 컨테이너가 없어 Vertex AI Agent Engine이 새 인스턴스를 시작해야 하는 경우에 발생합니다. 이렇게 하면 요청에 상당한 지연 시간이 추가됩니다.
예를 들어 기본 min_instances=1를 사용하여 에이전트에 300개의 동시 요청을 보내면 다음과 같은 결과가 표시될 수 있습니다.
콜드 스타트 (첫 번째 실행): 평균 지연 시간은 약 4.7초입니다.
웜 시작 (즉시 두 번째 실행): 평균 지연 시간은 약 0.4초입니다.
4초가 넘는 오버헤드는 부하를 처리하기 위해 새 인스턴스가 시작되기 때문입니다.
콜드 스타트 문제를 완화하려면 다음 방법을 시도해 보세요.
기준 트래픽을 처리할 수 있을 만큼 높은
min_instances값을 설정합니다. 예를 들어min_instances=10을 예시 에이전트로 설정하면 콜드 스타트의 평균 지연 시간이 약 1.4초로 줄어들 수 있습니다. 트래픽이 급증하거나 높은 애플리케이션의 경우 1에서 확장하지 않고 일반적인 부하를 처리할 수 있는 값으로min_instances를 설정합니다. 최댓값은 10입니다.대기열을 사용하여 안정적이고 지속적이며 예측 가능한 부하를 Vertex AI Agent Engine 런타임에 전송합니다. 예를 들어
min_instances=10및 기본concurrency(9)이 있는 에이전트 개발 키트(ADK) 기반 에이전트에서 60초 동안 분당 1,500개 쿼리 (초당 25개 쿼리)의 지속적인 부하 테스트를 실행하면 다음과 같은 결과가 나올 수 있습니다.- 평균 지연 시간은 약 1.6초로 일관되게 낮습니다.
안정적이고 지속적인 부하를 통해 서비스가 따뜻하게 유지되고 최적의 성능을 얻을 수 있습니다.
활용도가 낮은 비동기 작업자
기본적으로 container_concurrency는 동기 코드용으로 구성되어 있으며 각 Agent Engine 인스턴스는 한 번에 하나의 요청만 처리합니다. 에이전트 개발 키트(ADK)를 기반으로 하는 에이전트와 같은 비동기 에이전트는 LLM 또는 도구 호출과 같은 여러 I/O 바운드 요청을 동시에 처리할 수 있습니다.
예를 들어 min_instances=10 및 기본 container_concurrency=9을 사용하여 ADK 기반 에이전트에 동시 요청 300개를 전송하면 다음과 같은 결과가 나올 수 있습니다.
- 중앙값 지연 시간은 약 4초이지만 최대 지연 시간은 60초까지 급증합니다. 이는 서비스가 느리게 확장되는 동안 요청이 대기열에 많이 추가됨을 나타냅니다.
비동기 작업자의 활용률을 높이려면 각 에이전트 엔진 인스턴스가 여러 요청을 처리할 수 있도록 container_concurrency를 늘리세요. 각 에이전트가 처리할 수 있는 동시 요청 수는 container_concurrency / 9입니다. 값 9는 각 컨테이너 내에서 병렬로 실행되는 에이전트 프로세스 수를 나타냅니다.
예를 들어 min_instances=10 및 container_concurrency=36를 사용하여 동일한 ADK 기반 에이전트에 300개의 동시 요청을 전송하면 다음과 같은 결과가 나올 수 있습니다.
- 최대 지연 시간이 60초에서 약 7초로 줄어듭니다. 이는 기존 인스턴스가 트래픽 급증을 더 효과적으로 흡수할 수 있음을 보여줍니다.
비동기 에이전트 (예: ADK 기반 에이전트)의 경우 container_concurrency를 9의 배수 (예: 36)로 설정합니다. 이렇게 하면 트래픽 급증에 대한 응답성이 개선되고 스케일 아웃으로 인한 지연 시간이 줄어듭니다.
container_concurrency 값을 너무 높게 설정하면 메모리 부족 (OOM) 오류가 발생할 수 있습니다.