---
id: tracing-ingest
title: Troubleshoot Ingest
sidebar_label: Troubleshoot Ingest
description: Use tracing to troubleshoot problems with data ingest.
slug: /help/docs/apm/traces/tracing-ingest/
canonical: https://www.sumologic.com/help/docs/apm/traces/tracing-ingest/
---
import useBaseUrl from '@docusaurus/useBaseUrl';
You can use the `tracingIngest` source category to search for all events that impact [tracing collection](/docs/apm/traces/get-started-transaction-tracing#step-1-set-up-traces-collection).
## Trace and span limits
The following limits and constraints apply to trace data ingested by Sumo Logic:
| Limit | Value | Description |
|:--|:--|:--|
| Maximum spans per trace | 10,000 (OTLP/HTTP sources) | Traces exceeding this limit will have additional spans dropped with a `SpanDropped` audit event. |
| Maximum spans per trace | 1,000 (Older HTTP Traces sources) | Older HTTP Traces sources have a lower span limit per trace. |
| Span arrival window | 24 hours | Sumo Logic does not accept spans older than 24 hours. Spans with timestamps outside this window are dropped. |
| Maximum time between first and last span in a trace | 24 hours | All spans within a single trace must fall within a 24-hour window. The time difference between the earliest and latest span in a trace cannot exceed 24 hours. |
| Maximum metadata per trace | 64 MB | Total size of all metadata across all spans in a trace. |
| Maximum unique tag names per trace | 1,024 | Defines the maximum limit of indexed distinct tag keys. Tags beyond this limit are not indexed. |
| Maximum unique tag names per org | 10,000 per retention period | Organization-wide limit on unique tag names. |
| Tag name length | 64 characters | Tags with names longer than 64 characters are not indexed. |
| Tag value length | 4,096 characters | Tags with values over 4,096 characters are not indexed. |
### Trace assembly timeout
When Sumo Logic receives spans, it assembles them into complete traces. The trace assembly process has the following constraints:
* **Span arrival window**. Spans must arrive within 24 hours of their timestamp. Spans older than 24 hours are rejected and will not appear in trace data.
* **Trace duration limit**. The maximum time between the first and last span in a trace is 24 hours. If your application produces transactions that span more than 24 hours, the trace will only contain spans that fall within a 24-hour window.
:::note
These limits apply to Sumo Logic's hosted trace collection endpoints. If you are using the [Aggregating OpenTelemetry Collector](/docs/apm/traces/advanced-configuration/filter-shape-tracing-data), it has its own buffering configuration (`decision_wait` defaults to 30 seconds) that is separate from the backend trace assembly timeout.
:::
### Recommendations for long-running traces
If your application has long-running transactions (hours or days), consider the following approaches:
* **Break up long transactions**. Instrument your application to create separate traces for distinct phases of a long-running operation, using [Span Links](/docs/apm/traces/view-and-investigate-traces#span-links) to connect related traces.
* **Use shorter spans**. Instead of a single span covering the entire operation, create shorter spans that represent meaningful units of work within the 24-hour window.
* **Track with logs**. For operations exceeding 24 hours, consider using [correlated logs](/docs/apm/traces/advanced-configuration/correlate-logs) to track the overall transaction, with traces covering the active processing portions.
## Example query
Use the following index and source category filters to find all the `tracingIngest` audit logs:
```sumo
_index=sumologic_system_events AND _sourceCategory=tracingIngest
```
In the following example, all the events logged indicate some impact on ingest. The example query assumes all event types are events to be informed about.
```sumo
_index=sumologic_system_events AND _sourceCategory=tracingIngest
| json field=_raw "eventName"
| timeslice 1h
| count by _timeslice, eventName
| transpose row _timeslice column eventName
```
## Ingest events
When ingest events are returned by the query, audit logs provide the name of the event type (such as `SpanDropped`), the amount of that event type, and the error message associated with the event type.
In the following example, 57 spans were dropped and reported in one audit log.
```
"severityLevel": "Info",
"details": {
"amount": 57,
"name": "SpanDropped",
"description": "Dropped span because spans per trace limit is exceeded. Limit: 10000." }
```
The following ingest events and accompanying reason messages appear in tracing ingest audit logs.
### ServiceMapEdgesDropped
The service map edge was dropped due to the number of edges being bigger than a limit:
`Dropped ${numberOfDeletedEdges} edges because limit of number of edges is exceeded. (...)`
### ServiceMapNodesDropped
The service map node was dropped due to the number of nodes being bigger than a limit:
`Dropped ${numberOfDeletedNodes} nodes because limit of number of nodes is exceeded. (...)`
### SpanDropped
The span was dropped due to:
* Invalid schema:
* `OTLP span dropped due to invalid format.`
* `Zipkin span dropped due to invalid format.`
* The span was too big and couldn't be trimmed down:
* `Span could not be trimmed under the preliminary size limit. (...)`
* `Span could not be trimmed under the size limit. (...)`
* Quota exceeded:
`Span dropped due to spans per minute limit exceeded. (...)`
* Out of time range:
`Dropped span because it is outside of the data retention window. (...)`
* Span duplicated:
`Dropped span because it is duplicated. (...)`
* Spans per trace limit exceeded:
`Dropped span because spans per trace limit is exceeded. (...)`
### SpanFieldTrimmed
The span field was trimmed due to the span size being too big:
`Trimmed span field due to exceeded size limit. (...)`
### SpanLinksDropped
The span link was dropped due to the span size being too big:
`Dropped link in a span, because span didn't fit into the span size limit. (...)`
### SpanThrottled
The span was throttled due to a spike in ingest:
`Span has been throttled due to exceeded spans per minute limit. It will be processed with a delay.`
### TraceDropped
The trace aggregate was not processed due to too many traces per minute:
`Trace has been dropped due to per minute limit exceeded. Trace information might not exist or be incomplete.`
### TraceFieldTrimmed
The trace aggregate field was trimmed due to:
* Going above the max size limit:
`Trimmed trace field due to exceeded size limit. (...)`
* Critical path breakdown field was too big and was replaced with a default value:
`Trimmed (replaced with default value) trace field due to exceeded size limit. (...)`