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 | Начальный статус health | notready | ready, notready |
DYN_SYSTEM_HEALTH_PATH | Пользовательский путь для health-endpoint | /health | /custom/health |
DYN_SYSTEM_LIVE_PATH | Пользовательский путь для liveness-endpoint | /live | /custom/live |
DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS | Endpoints, требуемые для состояния ready | нет | ["generate"] |
DYN_HEALTH_CHECK_ENABLED | Включить канареечные проверки состояния | false (K8s: true) | true, false |
DYN_CANARY_WAIT_TIME | Количество секунд до отправки канареечной проверки состояния | 10 | 5, 30 |
DYN_HEALTH_CHECK_REQUEST_TIMEOUT | Таймаут запроса проверки состояния в секундах | 3 | 5, 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-средах
Как это работает
- Обнаружение простоя: После отсутствия активности на endpoint в течение настраиваемого времени ожидания (по умолчанию: 10 секунд) запускается канареечная проверка состояния
- Запрос проверки состояния: К endpoint отправляется легковесный тестовый запрос с минимальной полезной нагрузкой (генерирует 1 токен)
- Активность сбрасывает таймер: Если приходят обычные запросы, таймер канарейки сбрасывается и проверка состояния не отправляется
- Обработка таймаута: Если проверка состояния не отвечает в течение таймаута (по умолчанию: 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