<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Up or Down: notes on uptime and outages]]></title><description><![CDATA[Up or Down: notes on uptime and outages]]></description><link>https://upordownonline.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 31 Oct 2026 03:06:37 GMT</lastBuildDate><atom:link href="https://upordownonline.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[What "three nines" really buys you: turning uptime percentages into minutes]]></title><description><![CDATA[A practical guide to SLA targets, error budgets and why your check interval matters]]></description><link>https://upordownonline.hashnode.dev/what-three-nines-really-buys-you-turning-uptime-percentages-into-minutes</link><guid isPermaLink="true">https://upordownonline.hashnode.dev/what-three-nines-really-buys-you-turning-uptime-percentages-into-minutes</guid><category><![CDATA[SRE]]></category><category><![CDATA[Devops]]></category><category><![CDATA[monitoring]]></category><category><![CDATA[Cloud]]></category><dc:creator><![CDATA[upordown.online]]></dc:creator><pubDate>Sun, 25 Oct 2026 21:27:39 GMT</pubDate><content:encoded><![CDATA[<p>Uptime percentages are easy to promise and hard to feel. "99.9%" sounds almost perfect. "We may be down for 43 minutes every month" sounds like something you'd want to discuss first. They are the same statement.</p>
<p>This post is about doing that translation properly, and about two details that quietly change what an uptime number means: how long "a month" is, and how often you actually measure.</p>
<h2>The basic conversion</h2>
<p>Allowed downtime is just the complement of the target, multiplied by the period:</p>
<pre><code class="language-plaintext">allowed_downtime = (1 - uptime / 100) × period
</code></pre>
<p>Using an average month of 30.44 days (so twelve months add up to 365.2425 days), the common targets work out like this:</p>
<table>
<thead>
<tr>
<th>Uptime</th>
<th>Per month</th>
<th>Per year</th>
</tr>
</thead>
<tbody><tr>
<td>99% ("two nines")</td>
<td>7 h 18 min</td>
<td>~3 days 15 h</td>
</tr>
<tr>
<td>99.5%</td>
<td>3 h 39 min</td>
<td>~1 day 19 h</td>
</tr>
<tr>
<td>99.9% ("three nines")</td>
<td>43 min 50 s</td>
<td>8 h 45 min</td>
</tr>
<tr>
<td>99.95%</td>
<td>21 min 55 s</td>
<td>4 h 23 min</td>
</tr>
<tr>
<td>99.99% ("four nines")</td>
<td>4 min 23 s</td>
<td>52 min 36 s</td>
</tr>
<tr>
<td>99.999% ("five nines")</td>
<td>26.3 s</td>
<td>5 min 16 s</td>
</tr>
</tbody></table>
<p>Two patterns are worth memorising. Each extra nine cuts allowed downtime by a factor of ten. And the jump from 99.9% to 99.99% is where things stop being "be careful with deploys" and start being "you need redundancy across failure domains", because 4 minutes a month is less than one slow rollback.</p>
<h2>Which month?</h2>
<p>Contracts rarely say. If an SLA is evaluated per calendar month, a 31-day month allows slightly more downtime than February. For 99.9%, that's about 44.6 minutes in a 31-day month versus 40.3 in a 28-day one. Not huge, but if you're arguing about a credit, compute it from the daily figure (1 min 26 s at 99.9%) times the actual number of days.</p>
<h2>Your measurement has a resolution</h2>
<p>Here's the part that trips people up. Uptime isn't observed continuously; it's sampled. If you check every 5 minutes, an average month contains about 8,766 checks. At 99.9%, that leaves room for roughly <strong>8 failed checks</strong>.</p>
<p>That has consequences:</p>
<ul>
<li><strong>Short outages can be invisible.</strong> A 3-minute blip between two checks never shows up. Your users saw it; your dashboard didn't.</li>
<li><strong>One failed check can be "worth" 5 minutes.</strong> A 20-second hiccup that happens to coincide with a check counts as a whole interval.</li>
<li><strong>Five nines is unmeasurable at 5-minute resolution.</strong> 26 seconds a month is less than one sample. If you sell 99.999%, you need far finer checks, and from more than one place.</li>
</ul>
<p>So when you read an uptime figure, ask what produced it: how often, from where, and what counted as a failure.</p>
<h2>Define "down" before you count it</h2>
<p>Two monitors can watch the same service and report different uptime simply because they define failure differently. A reasonable, explicit definition might be:</p>
<ul>
<li><strong>Down</strong>: DNS fails, the connection is refused or times out, TLS fails, or the server returns a 5xx error such as 500, 502 or 504.</li>
<li><strong>Degraded</strong>: the server answers, but with 503, an invalid certificate, or only after several seconds.</li>
<li><strong>Up</strong>: any answer at all, including 403 or 429, since those prove the server is reachable.</li>
</ul>
<p>Also decide whether to <strong>retry before recording a failure</strong>. Retrying once after a couple of seconds filters out single dropped packets and makes the number reflect real incidents rather than network noise.</p>
<h2>Exclude user-triggered checks</h2>
<p>If people can trigger checks on demand ("is it down right now?"), keep those out of your uptime calculation. Users check far more often when something already looks broken, so including them skews the number downward in exactly the periods that matter. Scheduled checks at a fixed interval are the only fair denominator.</p>
<h2>Maintenance is a contract question</h2>
<p>Does planned maintenance count? That depends entirely on the agreement. Many SLAs exclude maintenance announced in advance, and each defines downtime its own way. A plain calculator counts every second, so read the definition before comparing your measured number with what a provider promised.</p>
<h2>Error budgets: using the number</h2>
<p>The most useful thing about the conversion is that it gives teams a budget. If your target is 99.9% and you've already spent 30 of your 43 minutes this month, that's a clear, non-political signal to slow risky releases. If you've spent 2, you have room to ship.</p>
<p>Write the budget in minutes, not percentages. "We have 13 minutes left" changes behaviour. "We're at 99.93%" doesn't.</p>
<h2>A quick tool</h2>
<p>If you'd rather not redo the arithmetic each time, the free <a href="https://upordown.online">uptime and SLA calculator on upordown.online</a> takes any percentage with any number of decimals and returns the allowed downtime per day, week, month, quarter and year, using the same 30.44-day month described above.</p>
<h2>Checklist before you sign (or write) an SLA</h2>
<ol>
<li>Convert the percentage into minutes per month and per year.</li>
<li>Confirm the evaluation period: calendar month, rolling 30 days, or quarter.</li>
<li>Ask what counts as downtime, and whether partial failures count.</li>
<li>Ask how it's measured: interval, locations, retries.</li>
<li>Check how maintenance windows are treated.</li>
<li>Compare against what you can actually observe with your own monitoring.</li>
</ol>
<p>Nines are a promise about minutes. Do the conversion, agree on the definitions, and the number starts meaning something.</p>
]]></content:encoded></item></channel></rss>