Перейти к основному содержимому

For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://docs.nvidia.com/dynamo/llms.txt. For full content including API reference and SDK examples, see https://docs.nvidia.com/dynamo/llms-full.txt.

Проверки состояния

Обзор

Dynamo предоставляет HTTP-конечные точки проверки состояния и liveness для каждого компонента, которые можно использовать для настройки startup-, liveness- и readiness-проб в системах оркестрации, таких как Kubernetes.

Переменные окружения

ПеременнаяОписаниеЗначение по умолчаниюПример
DYN_SYSTEM_PORTПорт сервера системного статуса-1 (отключено)8081
DYN_SYSTEM_STARTING_HEALTH_STATUSНачальный статус healthnotreadyready, notready
DYN_SYSTEM_HEALTH_PATHПользовательский путь для health-endpoint/health/custom/health
DYN_SYSTEM_LIVE_PATHПользовательский путь для liveness-endpoint/live/custom/live
DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUSEndpoints, требуемые для состояния readyнет["generate"]
DYN_HEALTH_CHECK_ENABLEDВключить канареечные проверки состоянияfalse (K8s: true)true, false
DYN_CANARY_WAIT_TIMEКоличество секунд до отправки канареечной проверки состояния105, 30
DYN_HEALTH_CHECK_REQUEST_TIMEOUTТаймаут запроса проверки состояния в секундах35, 10

Быстрый старт

Включите проверки состояния и запросите endpoints:

# Start your Dynamo components (default port 8000, override with --http-port or DYN_HTTP_PORT env var)
python -m dynamo.frontend &

# Enable system status server on port 8081
DYN_SYSTEM_PORT=8081 python -m dynamo.vllm --model Qwen/Qwen3-0.6B --enforce-eager &

Проверьте состояние:

# Frontend health (port 8000)
curl -s localhost:8000/health | jq

# Worker health (port 8081)
curl -s localhost:8081/health | jq

Проверка liveness фронтенда

Liveness-endpoint фронтенда сообщает статус live, пока сервис работает.

Liveness фронтенда не зависит от health или liveness worker'ов и опирается только на сам сервис Frontend.

Пример запроса

curl -s localhost:8080/live -q | jq

Пример ответа

{
"message": "Service is live",
"status": "live"
}

Проверка health фронтенда

Health-endpoint фронтенда сообщает статус healthy, пока сервис работает. После регистрации worker'ов endpoint health также будет перечислять зарегистрированные endpoints и instances.

Liveness фронтенда не зависит от health или liveness worker'ов и опирается только на сам сервис Frontend.

Пример запроса

curl -v localhost:8080/health -q | jq

Пример ответа

До регистрации worker'ов:

HTTP/1.1 200 OK
content-type: application/json
content-length: 72
date: Wed, 03 Sep 2025 13:31:44 GMT

{
"instances": [],
"message": "No endpoints available",
"status": "unhealthy"
}

После регистрации worker'ов:

HTTP/1.1 200 OK
content-type: application/json
content-length: 609
date: Wed, 03 Sep 2025 13:32:03 GMT

{
"endpoints": [
"dyn://dynamo.backend.generate"
],
"instances": [
{
"component": "backend",
"endpoint": "clear_kv_blocks",
"instance_id": 7587888160958628000,
"namespace": "dynamo",
"transport": {
"nats_tcp": "dynamo_backend.clear_kv_blocks-694d98147d54be25"
}
},
{
"component": "backend",
"endpoint": "generate",
"instance_id": 7587888160958628000,
"namespace": "dynamo",
"transport": {
"nats_tcp": "dynamo_backend.generate-694d98147d54be25"
}
},
{
"component": "backend",
"endpoint": "load_metrics",
"instance_id": 7587888160958628000,
"namespace": "dynamo",
"transport": {
"nats_tcp": "dynamo_backend.load_metrics-694d98147d54be25"
}
}
],
"status": "healthy"
}

Проверка liveness и health worker'ов

Проверки состояния для компонентов, отличных от frontend, включаются выборочно через переменные окружения. Если проверка для компонента включена, можно задать начальный статус и набор endpoint'ов, которые должны обслуживаться до того, как компонент будет объявлен ready.

Когда все endpoints, указанные в DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS, начинают обслуживаться, компонент переходит в состояние ready до тех пор, пока не завершит работу. Endpoints возвращают код HTTP HTTP/1.1 503 Service Unavailable во время инициализации и код HTTP HTTP/1.1 200 OK, когда готовы.

И /live, и /ready возвращают одну и ту же информацию.

Пример настройки окружения

export DYN_SYSTEM_PORT=9090
export DYN_SYSTEM_STARTING_HEALTH_STATUS="notready"
export DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS="[\"generate\"]"

Пример запроса

curl -v localhost:9090/health | jq

Пример ответа

До начала обслуживания endpoints:

HTTP/1.1 503 Service Unavailable
content-type: text/plain; charset=utf-8
content-length: 96
date: Wed, 03 Sep 2025 13:42:39 GMT

{
"endpoints": {
"generate": "notready"
},
"status": "notready",
"uptime": {
"nanos": 313803539,
"secs": 12
}
}

После начала обслуживания endpoints:

HTTP/1.1 200 OK
content-type: text/plain; charset=utf-8
content-length: 139
date: Wed, 03 Sep 2025 13:42:45 GMT

{
"endpoints": {
"clear_kv_blocks": "ready",
"generate": "ready",
"load_metrics": "ready"
},
"status": "ready",
"uptime": {
"nanos": 356504530,
"secs": 18
}
}

Канареечные проверки состояния (активный мониторинг)

Помимо описанных выше HTTP-endpoints, Dynamo включает систему канареечных проверок состояния, которая активно отслеживает endpoints worker'ов.

Обзор

Система канареечных проверок состояния:

  • Отслеживает состояние endpoints с помощью периодических тестовых запросов к endpoints worker'ов
  • Активируется только в периоды простоя - если трафик идет, проверки состояния пропускаются, чтобы избежать накладных расходов
  • Автоматически включается в Kubernetes-развертываниях через operator
  • Отключена по умолчанию в локальных и development-средах

Как это работает

  1. Обнаружение простоя: После отсутствия активности на endpoint в течение настраиваемого времени ожидания (по умолчанию: 10 секунд) запускается канареечная проверка состояния
  2. Запрос проверки состояния: К endpoint отправляется легковесный тестовый запрос с минимальной полезной нагрузкой (генерирует 1 токен)
  3. Активность сбрасывает таймер: Если приходят обычные запросы, таймер канарейки сбрасывается и проверка состояния не отправляется
  4. Обработка таймаута: Если проверка состояния не отвечает в течение таймаута (по умолчанию: 3 секунды), endpoint помечается как unhealthy

Конфигурация

В Kubernetes (включено по умолчанию)

Проверки состояния автоматически включает оператор Dynamo. Дополнительная конфигурация не требуется.

apiVersion: nvidia.com/v1alpha1
kind: DynamoGraphDeployment
metadata:
name: my-deployment
spec:
services:
VllmWorker:
componentType: worker
replicas: 2
# Health checks automatically enabled by operator

В локальных и development-средах (отключено по умолчанию)

Чтобы включить проверки состояния локально:

# Enable health checks
export DYN_HEALTH_CHECK_ENABLED=true

# Optional: Customize timing
export DYN_CANARY_WAIT_TIME=5 # Wait 5 seconds before sending health check
export DYN_HEALTH_CHECK_REQUEST_TIMEOUT=5 # 5 second timeout

# Start worker
python -m dynamo.vllm --model Qwen/Qwen3-0.6B

Параметры конфигурации

Переменная окруженияОписаниеЗначение по умолчаниюПримечания
DYN_HEALTH_CHECK_ENABLEDВключить или отключить канареечные проверки состоянияfalse (K8s: true)В K8s автоматически устанавливается в true
DYN_CANARY_WAIT_TIMEСколько секунд ждать в простое перед отправкой проверки состояния10Меньшие значения = более частые проверки
DYN_HEALTH_CHECK_REQUEST_TIMEOUTМаксимальное число секунд ожидания ответа на проверку состояния3Большие значения = больше терпимости к медленным ответам

Полезные нагрузки проверок состояния

Каждый backend определяет собственную минимальную полезную нагрузку проверки состояния:

  • vLLM: Генерация одного токена с минимальными параметрами sampling
  • TensorRT-LLM: Один токен с BOS token ID
  • SGLang: Запрос на генерацию одного токена

Эти полезные нагрузки спроектированы так, чтобы:

  • Быстро завершаться (обычно < 100 ms)
  • Минимизировать нагрузку на GPU
  • Проверять, что весь inference-stack работает

Наблюдение за проверками состояния

Когда проверки состояния включены, в логах будут строки вроде:

INFO Health check manager started (canary_wait_time: 10s, request_timeout: 3s)
INFO Spawned health check task for endpoint: generate
INFO Canary timer expired for generate, sending health check
INFO Health check successful for generate

Если endpoint не проходит проверку:

WARN Health check timeout for generate
ERROR Health check request failed for generate: connection refused

Когда использовать канареечные проверки состояния

Включать в production (Kubernetes):

  • ✅ Обнаруживать unhealthy worker'ы до того, как они повлияют на пользовательский трафик
  • ✅ Обеспечивать более быстрое обнаружение отказов и восстановление
  • ✅ Непрерывно отслеживать доступность worker'ов

Отключать в development:

  • ✅ Снижать шум в логах во время отладки
  • ✅ Избегать накладных расходов, когда они не нужны
  • ✅ Упрощать локальное тестирование

Устранение неполадок

Таймауты проверок состояния:

  • Увеличьте DYN_HEALTH_CHECK_REQUEST_TIMEOUT
  • Проверьте логи worker'а на ошибки
  • Убедитесь, что сетевое соединение работает

Слишком много логов проверок состояния:

  • Увеличьте DYN_CANARY_WAIT_TIME, чтобы снизить частоту
  • Или отключите в dev через DYN_HEALTH_CHECK_ENABLED=false

Проверки состояния не запускаются:

  • Убедитесь, что задано DYN_HEALTH_CHECK_ENABLED=true
  • Проверьте, что DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS включает нужный endpoint
  • Убедитесь, что worker обслуживает этот endpoint

Связанная документация