Overview

Performance Overview

Tindra captures transaction traces from your application so you can find slow endpoints, identify database bottlenecks, and understand where time is spent.

Tindra performance overview Tindra performance overview

What is a transaction?

A transaction is a timed operation with a name, usually an HTTP request or a background job. Transactions contain spans. Individual timed segments within the operation, like database queries, cache lookups, or external HTTP calls.

GET /api/orders (245ms)
  ├── db SELECT orders (180ms)
  ├── cache.get session (1ms)
  └── http POST analytics (18ms)

Enabling performance monitoring

Set a sample rate in your SDK to start capturing transactions. A rate of 0.1 captures 10% of all requests.

Laravel

SENTRY_TRACES_SAMPLE_RATE=0.1

JavaScript

Sentry.init({
  dsn: '...',
  tracesSampleRate: 0.1,
});

Python

sentry_sdk.init(
    dsn="...",
    traces_sample_rate=0.1,
)

The transactions list

Navigate to Performance in the sidebar to see all captured transactions grouped by name. For each transaction you see:

  • P50 / P95 / P99 latency: median and tail latencies
  • Throughput: requests per minute
  • Error rate: percentage of transactions that ended with an error

Sort by P95 or throughput to find your slowest or busiest endpoints.

Sampling strategy

Start with a low sample rate (0.050.1) and increase it if you need more granularity on specific endpoints. High-traffic applications rarely need 100% sampling.

For background jobs you may want full sampling since they run less frequently:

// Capture all queue jobs, sample 10% of HTTP requests
'traces_sampler' => function (\Sentry\Tracing\SamplingContext $context): float {
    if ($context->getTransactionContext()->getOp() === 'queue.process') {
        return 1.0;
    }
    return 0.1;
},

Next steps