Reduce MTTR by attacking the 80 percent: diagnosis, not repair
To reduce MTTR (Mean Time to Resolution), engineering teams must focus on the "Mean Time to Identify" (MTTI) or diagnosis phase, which typically accounts for 80% of the total incident lifecycle. While detection and remediation are often automated, the bottleneck remains the human-intensive process of correlating disparate signals across code, databases, and infrastructure to find the root cause.
Most engineering leaders are taught that to reduce MTTR, they need better alerting or automated rollbacks. While these are valuable, they target the edges of the problem. If an incident lasts 100 minutes, detection usually takes five minutes, and the fix (a revert or a restart) takes another ten. That leaves 85 minutes of "searching." This is the diagnosis gap. To truly reduce mttd and mttr, you must build a playbook that treats diagnosis as a structured forensic process rather than a creative brainstorming session.
MTTR has four clocks; one eats the other three
Mean Time to Resolution is not a monolithic metric. It is the sum of four distinct phases:
- Detection (MTTD): How long before an alert fires?
- Mobilization: How long until the right engineer is in the "war room"?
- Diagnosis: How long until the cause is identified?
- Remediation: How long to apply the fix and verify it?
What the data says: 80 percent is diagnosis
Industry data and historical benchmarks consistently show where the time goes. According to The Visible Ops Handbook, cited by New Relic, roughly 80% of the MTTR for unplanned outages is spent identifying which change or component caused the failure. Identification is inherently harder than fix-application because modern distributed systems have an almost infinite state space.
Consider the Railway incident on July 2, 2026. This case study illustrates the diagnosis bottleneck perfectly. The service experienced a significant US-East outage. While the initial routing issue was identified and fixed by 08:59, the system remained degraded because of stuck storage connections. It took until 10:45 to identify that specific secondary cause. In a 257-minute total incident window, 106 minutes were spent in pure diagnosis of the "stuck-state" side effect.
Key Takeaway: Instrument and measure diagnosis time separately; most MTTR wins come from faster cause identification across the whole stack, not faster restarts.
Why detection and repair got all the attention
Historically, vendors have focused on detection (Observability) and repair (CI/CD and Infrastructure as Code).
- Detection is easy to sell: it’s about more metrics, more logs, and "AI-powered" anomaly thresholds.
- Repair is easy to automate: Kubernetes operators and blue-green deployments make "the fix" a button press.
Diagnosis, however, is messy. It requires deep context, the ability to read code, and the patience to query database internals. Because diagnosis was seen as a "human" skill, it was left out of the automation roadmap. To reduce mttr in incident management, we have to stop treating diagnosis as an art and start treating it as a workflow.
The diagnosis playbook, surface by surface
When an incident hits, the clock is running. A diagnosis-first playbook moves through the stack in order of probability.
What changed: deploys, config, dependencies
In a stable system, failure is usually preceded by change. Your first diagnostic step should be a "diff of the world."
- Deploys: What code reached production in the last 60 minutes?
- Feature Flags: Which toggles were flipped?
- Config: Was there a change in the environment variables or secrets?
- Dependencies: Did a third-party API update or go down? (Check StatusGator or IsDown).
Database: slow queries, plans, schema drift
If no code changed, the database is the next suspect. Often, "high MTTR" is caused by a sudden shift in query execution plans.
- Check for Schema Drift: Did someone run a manual
ALTER TABLEthat didn't go through CI? - Slow Query Logs: Look for queries that were fast yesterday but are slow now. This often points to a "tipping point" where a table size hit a threshold that invalidated a cached plan.
- Locks: Use
pg_stat_activityor equivalent to see if an uncommitted transaction is holding up the queue.
Logs: exception clustering and silent failures
Standard logging often fails during major incidents because the volume spikes. To reduce mttr, you need to cluster logs. Instead of looking at a stream, look at the delta in exception types.
- What is the "New" exception that appeared in the last 10 minutes?
- Are there silent failures where a service is returning 200 OK but the payload is empty?
Infra and CI: capacity, cost, flaky signals
Sometimes the cause is external to the application logic.
- Cloud Quotas: Did you hit an AWS service limit?
- CI State: Is the current "passing" build actually failing some sub-tests that were marked as "allowed to fail"? Flaky tests often hide the signal of a real regression.
Answering common MTTR questions
What causes a high MTTR?
A high MTTR is typically caused by "black box" components, lack of searchable audit trails, and siloed knowledge. If only one person knows how the caching layer works, your MTTR is tied to that person's sleep schedule.
What is a good MTTR value?
According to DORA (DevOps Research and Assessment) benchmarks, "Elite" performers have an MTTR of less than one hour. "Medium" performers range between one day and one week. If your MTTR is consistently over 4 hours, your diagnosis phase is likely blocked by a lack of observability.
Is lower MTTR better?
In isolation, yes. However, a lower MTTR should not come at the cost of "bandage" fixes that lead to higher incident frequency (MTBF - Mean Time Between Failures). The goal is stable resolution, not just a quick restart.
How to improve MTTR and MTBF?
To improve both, you must conduct blameless postmortems that focus on "how we could have diagnosed this 50% faster." This often leads to adding better instrumentation or "debug endpoints" that provide instant visibility into internal state.
Measuring diagnosis time explicitly
To reduce mttr, you must measure it. Standard incident management tools like PagerDuty or Rootly allow you to add "milestones." Start tracking:
- Incident Start
- First Responder Linked
- Cause Identified (Diagnosis End)
- Fix Applied
- Resolved
If the gap between "First Responder" and "Cause Identified" is the largest segment, stop buying better alerting tools and start investing in diagnostic tools.
Where AI assistance actually fits
The current wave of "AI for SRE" often misfires by trying to automate the fix. Giving an LLM write access to your production environment is a security and stability risk many aren't ready to take.
Where AI actually provides value is in hypothesis generation and verification. An AI agent can scan 50,000 logs, 100 recent PRs, and 10 database metrics in seconds—something a human cannot do. It can present a hypothesis ("I think the 10:05 deployment of the billing service caused a lock on the users table") and provide the evidence.
The final step—applying the patch—should still be a human-in-the-loop process. This "AI-assisted diagnosis" shrinks the 80% gap without sacrificing the safety of the production environment.
Common Pitfalls
- The "Restart First" Trap: Restarting a service can clear symptoms but wipe the diagnostic data (like memory heaps or stuck threads) needed to find the root cause.
- Communication Overhead: In large incidents, having 20 people in a Zoom call actually increases MTTR. Assign one "Incident Commander" and one "Scribe" so the engineers can stay in the "Diagnosis" flow.
- Ignoring Silent Errors: Just because your 5xx rate is low doesn't mean the system is healthy. High latency is often a "pre-incident" signal that, if diagnosed early, prevents an outage.
Sources & further reading
- According to New Relic, 80% of MTTR is spent on identification.
- The Railway July 2026 Incident Report demonstrates the long tail of diagnosis in complex outages.
- LogicMonitor notes that identification in complex stacks can be 3-4x longer than remediation.
Solving the Diagnosis Bottleneck with Operate
If you find that your teams are stuck in the "searching" phase of every incident, it may be time to look at a dedicated diagnosis platform. Operate is built specifically for the 80% problem. It acts as a self-hosted AI SRE that watches your production environment and, the moment an incident occurs, kicks off a proactive Root Cause Analysis (RCA).
Operate uses a four-agent pipeline to investigate code changes, database performance, and logs. It doesn't just alert you; it finds the evidence and drafts a fix as a PR for your team to review. Because Operate is self-hosted, you maintain complete control and privacy over your data while gaining the diagnostic speed of an automated system. It’s an auditable, read-only approach to shrinking MTTR by making diagnosis instantaneous.