Break things on purpose - Chaos testing with NResilience
Stop hoping your resilience policies work. Use the Chaos tool to inject faults through the pipeline and verify your system's behavior under pressure.
Read the postWriting
Deep dives into the architecture of NResilience - single-loop execution, memory budgets, and the low-level trade-offs of building a high-performance resilience engine for .NET.
Stop hoping your resilience policies work. Use the Chaos tool to inject faults through the pipeline and verify your system's behavior under pressure.
Read the postStop guessing how your system recovers from an outage. Use scripted simulations to turn resilience behavior into a deterministic, assertable fact.
I ran NResilience and Polly 8 through a sustained-load stress suite for 32 minutes. Here are the numbers.
The breaker state machine, adaptive trips that measure instead of guess, the 100ms guarded rejection, the recovery ramp, and equal jitter - how each piece works and why it is there.
Why attempt limits cannot stop a retry storm, how a token bucket funded by successful traffic can, the two things it exempts, the hint it refuses to overstate, and the nested-retry marker for the loops it cannot see.
A final synthesis of the NResilience series, reflecting on the journey from a single retried call to a high-performance resilience engine.
A meta-look at the quality gates, analyzer bundling, and CI processes that ensure NResilience's promises of performance and correctness.
An essay on the deliberate design choices in NResilience, from guarded rejections to live quantiles and the anatomy of a Verdict.
A deep dive into the NResilience flat executor architecture, its allocation budgets, and why a single loop is faster than a layered pipeline.
Explore how NResilience handles gRPC status classification, per-service scoping, and the critical math behind wire deadlines.
Learn how NResilience handles per-host state, transport timeouts, wire idempotency, and nested retry detection in .NET HTTP clients.
How to write deterministic resilience tests using scripted callbacks, fake clocks, and event recording.
How to propagate deadlines and criticality across services in ASP.NET Core, avoiding the nested-retry storm and the "zombie request" problem.
Page 1 of 3