Join our community of builders on

Telegram!Telegram

Readiness endpoint that checks system resources, Redis, Queue, and plugins.

Returns 200 OK if the service is ready to accept traffic, or 503 Service Unavailable if not. This endpoint is used for readiness probes in container orchestration platforms like AWS ECS or Kubernetes.

Health Check Components

  • System: File descriptor usage, CLOSE_WAIT socket count
  • Redis: Primary and reader pool connectivity
  • Queue: Queue's Redis connections (separate from app's Redis)
  • Plugins: Plugin pool health, circuit breaker state, and connection metrics (if enabled)

Status Levels

  • healthy: All components operational
  • degraded: Some components degraded but service can function (e.g., reader pool down)
  • unhealthy: Critical components failed, service unavailable

Plugin Connection Metrics

When plugins are enabled, the following connection metrics are exposed:

  • shared_socket_available_slots: Number of additional concurrent plugin executions that can start
  • shared_socket_active_connections: Current number of active plugin execution connections
  • shared_socket_registered_executions: Number of plugin executions currently registered (awaiting response)
  • connection_pool_available_slots: Available connections to the pool server
  • connection_pool_active_connections: Active connections to the pool server

These metrics help diagnose connection pool exhaustion and plugin capacity issues.

Caching

Health check results are cached for 10 seconds to prevent excessive load from frequent health checks. Multiple requests within the TTL return the same cached response.

GET
/api/v1/ready

Response Body

curl -X GET "https://loading/api/v1/ready"
{
  "components": {
    "plugins": {
      "avg_response_time_ms": 120,
      "circuit_state": "closed",
      "connection_pool_active_connections": 2,
      "connection_pool_available_slots": 8,
      "enabled": true,
      "memory": 52428800,
      "pool_completed": 1000,
      "pool_queued": 2,
      "recovering": false,
      "shared_socket_active_connections": 2,
      "shared_socket_available_slots": 48,
      "shared_socket_registered_executions": 2,
      "status": "healthy",
      "success_rate": 99.5,
      "uptime_ms": 3600000
    },
    "queue": {
      "status": "healthy"
    },
    "redis": {
      "primary_pool": {
        "available": 8,
        "connected": true,
        "max_size": 16
      },
      "reader_pool": {
        "available": 8,
        "connected": true,
        "max_size": 16
      },
      "status": "healthy"
    },
    "system": {
      "close_wait_count": 0,
      "fd_count": 42,
      "fd_limit": 1024,
      "fd_usage_percent": 4,
      "status": "healthy"
    }
  },
  "ready": true,
  "status": "healthy",
  "timestamp": "2026-01-30T12:00:00Z"
}
{
  "components": {
    "plugins": {
      "avg_response_time_ms": 150,
      "circuit_state": "open",
      "connection_pool_active_connections": 4,
      "connection_pool_available_slots": 6,
      "enabled": true,
      "error": "Plugin pool health check failed",
      "memory": 52428800,
      "pool_completed": 1000,
      "pool_queued": 5,
      "recovering": true,
      "recovery_percent": 10,
      "shared_socket_active_connections": 5,
      "shared_socket_available_slots": 45,
      "shared_socket_registered_executions": 5,
      "status": "degraded",
      "success_rate": 95.5,
      "uptime_ms": 3600000
    },
    "queue": {
      "error": "Queue connection: Stats check timed out",
      "status": "unhealthy"
    },
    "redis": {
      "error": "Redis primary pool: PING timed out",
      "primary_pool": {
        "available": 0,
        "connected": false,
        "error": "PING timed out",
        "max_size": 16
      },
      "reader_pool": {
        "available": 0,
        "connected": false,
        "error": "PING timed out",
        "max_size": 16
      },
      "status": "unhealthy"
    },
    "system": {
      "close_wait_count": 0,
      "fd_count": 42,
      "fd_limit": 1024,
      "fd_usage_percent": 4,
      "status": "healthy"
    }
  },
  "ready": false,
  "reason": "Redis primary pool: PING timed out",
  "status": "unhealthy",
  "timestamp": "2026-01-30T12:00:00Z"
}