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 operationaldegraded: 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 startshared_socket_active_connections: Current number of active plugin execution connectionsshared_socket_registered_executions: Number of plugin executions currently registered (awaiting response)connection_pool_available_slots: Available connections to the pool serverconnection_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.
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"
}