See why a request is slow, down to the line of code.

Spanrow traces every request across your services and shows which span, query or loop made it slow.

Spanrow traces every request across your services and shows which span, query or loop made it slow.

Fig. 1 A checkout request, traced

Live demo, try it

POST/v2/checkouttrace 7f3a91c2e04b1,284ms
Span
0
200
400
600
800
1.0s
1.2s
POST /v2/checkout
1,284 ms
auth.verify_sessionauth
18 ms
flags.evaluateflags
4 ms
cart.loadcart
41 ms
GET cart:{id}redis
3 ms
SELECT cart_itemspostgres
31 ms
▸ pricing.quotepricing
902 ms
inventory.reserveinventory
94 ms
tax.calculatetax-api
61 ms
risk.scorerisk
58 ms
payments.authorizestripe
168 ms
INSERT orderspostgres
29 ms
publish order.creatednats
7 ms
Last hour, 4,212 checkouts
This one is slower than 94%
median 754 ms
ServiceDatabaseCache, queueExternal call
p95 latency, last 24 h/v2/checkout
1.31sSLO 500 ms · breached
SLO 500 msdeploy 4f1c9a224 h agonow
Where this request spent its time
pricing902 ms
stripe168 ms
inventory94 ms
tax-api61 ms
risk58 ms
cart41 ms
postgres29 ms
1Hover a span2Open the slow one3Ship the fix

Three steps from install to root cause.

Three steps from install to root cause.

1

Install the agent

Add one package and start your server with it. Spanrow finds your web framework, database clients and HTTP calls on its own.

npm install @spanrow/node

node -r @spanrow/node/auto server.js

2

Send real traffic

Every request becomes a trace: one row per step, timed to the microsecond, across each service it touches.

storefront-api 14 spans

pricing 24 spans

payments 3 spans

3

Open the slow one

Spanrow ranks requests by the time they cost you and names the span, the query and the line behind each one.

pricing/quote.ts:42

N+1 query, 23 calls

Fig. 2 p95 for POST /v2/checkout, before and after one deploy

Fig. 2 p95 for POST /v2/checkout, before and after one deploy

Before 4f1c9a2

1.31 s

After 4f1c9a2

0.44 s

Target

0.50 s

Every chart knows what you shipped.

Deploys show up as markers on your latency charts. When p95 moves, Spanrow names the release that moved it and links to the diff.

“We had been guessing at checkout latency for a year. Spanrow showed us the loop in pricing on the first afternoon.”

“We had been guessing at checkout latency for a year. Spanrow showed us the loop in pricing on the first afternoon.”

Maya Okafor, Staff Engineer at Halden

What Spanrow records

Everything below arrives from the one package in step 1.

Spans

Every call between services, with start time, duration and status.

Queries

The statement, row count and time of each database call, with values removed.

Logs

Log lines written during a span, attached to that span.

Deploys

Commit, author and time of each release, drawn on every chart.

Targets

A p95 goal for each route, and how much of this month’s budget is left.

Retention

30 days of full traces on Team, 90 days on Enterprise.

Trace your slowest endpoint this afternoon.

Trace your slowest endpoint this afternoon.

Free for one service. No card needed.

Create a free website with Framer, the website builder loved by startups, designers and agencies.