Sub‑20ms Latency
Hyrex is engineered for low enqueue→start latency. With co‑located workers, tuned queues, and zero heavy coordination on the hot path, typical p50 dequeue latency can stay under 20ms.
The design avoids central bottlenecks: workers keep warm connections, use lightweight claims, and batch acks. You get fast wake‑ups without aggressive polling or noisy spin loops.
How we keep latency low
- Co‑location: Place workers near your database or use a low‑latency private link to minimize RTT.
 - Warm connections: Pooled connections with prepared statements—no per‑task handshake.
 - Lightweight claims: Optimistic task claiming with minimal locking and batched status updates.
 - Signal‑driven wakeups: Event signals nudge workers to pick up work quickly without hot polling.
 - Queue partitioning: Separate IO/CPU queues and per‑queue concurrency to avoid head‑of‑line blocking.
 - Prefetch window: Small, configurable prefetch keeps executors fed while avoiding bursty spikes.
 
Recommended setup
- Run workers close to data: Same region/AZ as your Postgres to keep network latency negligible.
 - Use dedicated queues: Route fast paths to their own queue, reserve others for slow or bursty jobs.
 - Right‑size concurrency: Match executor concurrency to CPU and downstream limits; avoid oversubscription.
 - Batch writes: Prefer fewer, larger updates for acks/metrics over many tiny ones.
 - Measure p50/p99: Track dequeue latency and throughput in Studio; alert on regressions.
 
Task and queue tips
- Pick the right queue: Configure tasks with withConfig({ queue }) to isolate hot paths.
 - Bounded work: Keep individual tasks focused and short; split long work into steps or a workflow.
 - Retry smartly: Use capped retries with jitter to protect latency under partial failures.
 
Verify in Studio
Use the open‑source Studio to inspect dequeue latency and throughput by queue. Watch p50/p95/p99 while tuning concurrency and queue placement.