# Uploading a large OpenTelemetry trace to a local OTLP/HTTP traces receiver

> Source: <https://www.jvt.me/posts/2026/09/30/large-otel/?utm_medium=rss&utm_source=rss>
> Published: 2026-09-30 17:33:46+00:00

I've recently been doing some work with improving the performance of [Renovate](https://docs.renovatebot.com/) on larger repositories.

To guide this investigation, I'm leveraging our [OpenTelemetry support](https://docs.renovatebot.com/opentelemetry/) to more meaningfully understand how Renovate operates in parts of the codebase, and hone in on areas of improvement.

One of the repositories I'm running these tests is particularly large, and leads to traces of roughly ~30MB in size.

When trying to ingest them into my local [Jaeger instance](https://www.jaegertracing.io/), I hit HTTP size limits, and [the documentation I'd written in the past (with help from Claude Sonnet 5) for ingesting these](https://github.com/renovatebot/renovate/blob/d706bb2e25353fec2e39db46f3e0db219da6aa79/docs/usage/opentelemetry.md#file-exporter) doesn't seem to handle the size limits.

With a bit of tweaking with Claude Sonnet 5, this is now better handled with:

```
while IFS= read -r line || [ -n "$line" ]; do
 curl -s -X POST http://localhost:4318/v1/traces \
 -H 'Content-Type: application/json' \
 --data-binary @- <<< "$line"
done < /tmp/traces.jsonl
```

Notice that we redirect (via a herestring) the line's contents in via `stdin`, instead of passing it as an argument, which is what led to the shell crashing.

With this few-liner this leads to us being able to ingest very large traces!
