mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-02-19 07:50:43 +01:00
- Refactor specialized docs for conciseness and clarity - Rename files to UPPER_CASE.md convention - Verify accuracy against codebase - Fix broken links
53 lines
1.8 KiB
Markdown
53 lines
1.8 KiB
Markdown
# 📉 Adaptive Polling
|
|
|
|
Pulse uses an adaptive scheduler to optimize polling based on instance health and activity.
|
|
|
|
## 🧠 Architecture
|
|
* **Scheduler**: Calculates intervals based on health/staleness.
|
|
* **Priority Queue**: Min-heap keyed by `NextRun`.
|
|
* **Circuit Breaker**: Prevents hot loops on failing instances.
|
|
* **Backoff**: Exponential retry delays (5s to 5m).
|
|
|
|
## ⚙️ Configuration
|
|
Adaptive polling is **enabled by default**.
|
|
|
|
### UI
|
|
**Settings → System → Monitoring**.
|
|
|
|
### Environment Variables
|
|
| Variable | Default | Description |
|
|
| :--- | :--- | :--- |
|
|
| `ADAPTIVE_POLLING_ENABLED` | `true` | Enable/disable. |
|
|
| `ADAPTIVE_POLLING_BASE_INTERVAL` | `10s` | Healthy poll rate. |
|
|
| `ADAPTIVE_POLLING_MIN_INTERVAL` | `5s` | Active/busy rate. |
|
|
| `ADAPTIVE_POLLING_MAX_INTERVAL` | `5m` | Idle/backoff rate. |
|
|
|
|
## 📊 Metrics
|
|
Exposed at `:9091/metrics`.
|
|
|
|
| Metric | Type | Description |
|
|
| :--- | :--- | :--- |
|
|
| `pulse_monitor_poll_total` | Counter | Total poll attempts. |
|
|
| `pulse_monitor_poll_duration_seconds` | Histogram | Poll latency. |
|
|
| `pulse_monitor_poll_staleness_seconds` | Gauge | Age since last success. |
|
|
| `pulse_monitor_poll_queue_depth` | Gauge | Queue size. |
|
|
| `pulse_monitor_poll_errors_total` | Counter | Error counts by category. |
|
|
|
|
## ⚡ Circuit Breaker
|
|
| State | Trigger | Recovery |
|
|
| :--- | :--- | :--- |
|
|
| **Closed** | Normal operation. | — |
|
|
| **Open** | ≥3 failures. | Backoff (max 5m). |
|
|
| **Half-open** | Retry window elapsed. | Success = Closed; Fail = Open. |
|
|
|
|
**Dead Letter Queue**: After 5 transient or 1 permanent failure, tasks move to DLQ (30m retry).
|
|
|
|
## 🩺 Health API
|
|
`GET /api/monitoring/scheduler/health` (Auth required)
|
|
|
|
Returns:
|
|
* Queue depth & breakdown.
|
|
* Dead-letter tasks.
|
|
* Circuit breaker states.
|
|
* Per-instance staleness.
|