You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[bug] v2 self-host: memory grows to 5–10 GB with uptime; "Telemetry export failed" (transport) rate climbs until restart #2216
Self-host (Docker) on Railway, 1 replica, with a volume at /app/data.
Integration involved
None in particular. Light MCP traffic from a few clients.
What happened
Container memory (RSS) grows steadily with uptime and only drops on restart. Over this billing cycle, memory was about 90% of the hosting cost.
Value
RAM right after restart
~0.75 GB
RAM after ~38 h uptime
~4.8 GB
Peak seen in last 7 days
~8.1 GB (10 GB on the provider chart)
7-day average
~3.4 GB
CPU (avg)
~0.23 vCPU, ~0.07 right after restart
Disk on /app/data
~0.5 GB, flat
The memory graph has a sawtooth shape: it climbs between deploys and restarts, then resets.
OTLP export is configured to an external collector (OTEL_EXPORTER_OTLP_ENDPOINT=http://<collector>:4318, otel/opentelemetry-collector-contrib:0.162.0). The collector is healthy, uses ~90 MB of RAM, and keeps receiving traces and metrics from both executor-selfhost and executor-app.
Correlated log signal
After about a day of uptime, the server starts logging Telemetry export failed. The rate rises with uptime and drops to zero after a restart:
The logged fiberId went from #2568204 to #7385470 over about 6.5 h, roughly 200 new fibers/s on an almost idle instance.
My guess, which I have not confirmed: memory growth starts before the export failures, so the failures may be a symptom. A high idle span volume, as described in #2194 with the 1 s scheduler poll traced, combined with an export path that buffers or retries without a bound, could keep growing heap. It could also be a separate leak that eventually slows down the exporter.
Other startup lines, possibly unrelated:
service motel: The compatibility flag nodejs_compat became the default... (the bundled Motel still starts even with an OTLP endpoint set)
[Better Auth]: Field lastRequest in table rateLimit has a different type in the database. Expected number but got int8.
What you expected
Memory stays roughly flat on an almost idle self-host instance. Telemetry export failures should not build up over time, and buffers should be bounded.
Steps to reproduce
Run executor-selfhost:beta (2.0.0-beta.10) with OTEL_EXPORTER_OTLP_ENDPOINT pointing at an OTel collector.
Leave it running with light traffic for 1–2 days.
Watch container RSS, and grep logs for Telemetry export failed.
Another data point: executor-selfhost:2.0.0-beta.10 (Docker, Portainer stack, Linux host). Memory reached about 6.5 GB before we restarted the container; usage was light (a handful of apps, MCP from a few agents). We didn't capture heap or telemetry logs before the restart, so this only confirms the growth on beta.10.
Activity
bierlingm commentedon Oct 13, 2026
Another data point:
executor-selfhost:2.0.0-beta.10(Docker, Portainer stack, Linux host). Memory reached about 6.5 GB before we restarted the container; usage was light (a handful of apps, MCP from a few agents). We didn't capture heap or telemetry logs before the restart, so this only confirms the growth on beta.10.