Skip to main content

Requests Hang Indefinitely

Symptoms:
  • orpheus run never returns
  • No error message, just waiting
  • Request shows as “STARTED” in execlog but never completes
Diagnosis:
Common Causes:
  1. Worker crashed during execution (OOM, segfault)
  2. Agent code has infinite loop
  3. External API not responding
Solutions: Immediate fix:
Long-term fix:

“Queue is Full” Errors

Symptoms:
  • HTTP 503 “agent queue is full”
  • Requests rejected immediately
Diagnosis:
Common Causes:
  1. Queue size too small for burst traffic
  2. All workers busy, queue fills up
  3. max_workers limit reached
Solutions: Increase queue capacity:
Increase worker count:
Client-side backoff:

Task Timeout Errors

Symptoms:
  • Error: “task timeout after 60s”
  • Task is killed mid-execution
Diagnosis:
Common Causes:
  1. Slow external API calls (LLM APIs can take 10-30s)
  2. Large file processing
  3. Inefficient code
Solutions: Increase timeout:
Optimize agent code:
Chunk large operations:

“Seccomp Blocked Syscall” Errors

Symptoms:
  • Error: “Operation not permitted”
  • EPERM error in logs
Diagnosis:
Common Causes:
  1. Using os.system() or subprocess for admin commands (mount, reboot, etc.)
  2. Trying to debug with ptrace
  3. Using native extensions with blocked syscalls
Solutions: Check allowed syscalls in the Security Model Rewrite code to avoid blocked operations:
If you have a legitimate use case for a blocked syscall, file an issue on GitHub.

Circuit Breaker Opened

Symptoms:
  • Error: “circuit breaker open (cooldown: 45s remaining)”
  • Workers not spawning
  • Pool stuck at low capacity
Diagnosis:
Common Causes:
  1. Repeated worker spawn failures (5 consecutive failures opens circuit)
  2. Image not available
  3. runc errors
Solutions: Wait for cooldown (60 seconds):
Fix underlying issue:
Manual reset (restart daemon):

Agent Won’t Deploy

Error: agent.yaml not found Fix: Ensure your directory has agent.yaml at the root:

Error: entrypoint function not found Fix: Check that your handler function exists and matches agent.yaml:

Daemon Not Running

Error: connection refused or daemon not reachable Fix:

Out of Memory (OOM)

Symptoms:
  • Worker crashes during execution
  • Exit code 137 (SIGKILL)
  • Logs show “killed” or “OOM”
Diagnosis:
Solutions: Increase memory limit:
Optimize memory usage:

Slow Autoscaling

Symptoms:
  • First concurrent request is slow
  • Takes several seconds to scale up
Common Causes:
  1. min_workers too low (starting from 1 worker)
  2. Cold start (first worker spawn takes 50-200ms)
Solutions: Pre-warm workers:

Cold Start Delays

Symptom: First request is slow Cause: min_workers: 0 or worker died Fix: Keep workers warm:

Session Not Sticky

Symptom: Requests with same session hit different workers Possible causes:
  1. Worker was busy, request went to another
  2. Worker died between requests
This is expected behavior. Session affinity is best-effort. For guaranteed state, use workspace.

Files Missing After Restart

Cause: Files were in /tmp (ephemeral) instead of /workspace (persistent) Fix: Always use /workspace for data you need to keep:

High Memory Usage on Host

Symptoms:
  • Host memory usage growing over time
  • Many orpheus-worker processes
Diagnosis:
Solutions: Reduce max_workers:
Enable aggressive scale-down:

Port Already in Use

Error: address already in use :7777 Fix:

Getting Help

Before Filing an Issue

  1. Check this troubleshooting guide
  2. Check the Security Model for security-related issues
  3. Check Capacity Planning for scaling issues
  4. Search existing issues on GitHub

Filing a Good Issue

Include:
  • Orpheus version: orpheus version
  • Operating system: uname -a
  • Daemon logs: sudo journalctl -u orpheusd | tail -50
  • Agent config: cat agent.yaml
  • Steps to reproduce

Community

Debug with ExecLog

Find what went wrong →