Skip to content

Commit b756324

Browse files
[Blog] Unplanned Downtime
1 parent bf49f48 commit b756324

File tree

4 files changed

+73
-5
lines changed

4 files changed

+73
-5
lines changed

sitemap.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,7 @@
6363
<url>
6464
<loc>https://scherzer.dev/Blog/20251118-mergephp-talk</loc>
6565
</url>
66+
<url>
67+
<loc>https://scherzer.dev/Blog/20251125-unplanned-downtime</loc>
68+
</url>
6669
</urlset>
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
title: Unplanned Downtime, November 2025
3+
extensions:
4+
footnotes: true
5+
---
6+
7+
# Unplanned Downtime, November 2025
8+
9+
Last week, I had some unexpected downtime for my website. The original cause was
10+
a power issue at the physical server, and out of my control, but an oversight of
11+
mine made the situation worse.
12+
13+
## The Outage
14+
15+
In the evening (Mountain Time[^1]) of Monday, November 17th, my hosting provider,
16+
Brownrice, suffered a temporary outage due to power supplies failures for the
17+
server that contains my VPS. Brownrice reports that the outage was between 17:30
18+
and 18:00, but I suspect that was the outage for any of their customers. Based
19+
on my server logs, my server was back up at 17:47.
20+
21+
Once the server was online, the tool I use for managing web requests,
22+
[Traefik][traefik], restarted automatically based on the
23+
[configuration for the docker containers][traefik-restart]. The client websites
24+
that I host, which run on WordPress, also restarted automatically thanks to the
25+
[same configuration][wordpress-restart]. However, I forgot to apply that
26+
configuration to my own website!
27+
28+
From 17:51, when the first request was made to my website and failed, until
29+
18:21 when I manually restarted the web containers for my staging and production
30+
sites, the downtime was entirely avoidable.
31+
32+
## Mitigation
33+
34+
I got lucky that I noticed the downtime when I did, since I have no automated
35+
monitoring set up. The first thing I did was to manually restart the docker
36+
containers for my website. At 18:21, the downtime was over.
37+
38+
Later that same day, I [merged a change][patch-56] to ensure that moving
39+
forward, the docker containers would restart if they stopped unexpectedly. If
40+
the entire server goes down and restarts, that change should bring my website
41+
back up as soon as possible.
42+
43+
## Next Steps
44+
45+
I've started looking into monitoring options, to be able to learn about outages
46+
earlier. While I would generally prefer to self-host the tool used, if I put the
47+
monitoring on the same server as the website then the server being down would
48+
also bring the monitoring down. Self-hosting isn't an option.
49+
50+
There are a variety of companies that offer monitoring services, but I don't
51+
need a whole bunch of fancy features, and would rather not need to pay for the
52+
monitoring - most offers I saw cost more than what I pay to rent the server!
53+
54+
I'll try to find a free tool for monitoring my website status, but if that
55+
doesn't work I guess I can just leave it unmonitored. This is a personal site,
56+
not a client site, and uptime is best-effort.
57+
58+
[^1]: All times in this blog post are in Mountain Time; the hosting company is
59+
based in New Mexico.
60+
61+
[traefik]: https://traefik.io/
62+
[traefik-restart]: https://github.com/DanielEScherzer/website-traefik/blob/ea50b0520edc6d0aa8ab33442945ab8e2d88b408/docker-compose.yml#L4
63+
[wordpress-restart]: https://github.com/DanielEScherzer/wordpress-site/blob/e27bdb23be09e06bd78de5ba87fc3834ab6ab8df/docker-compose.yml#L28
64+
[patch-56]: https://github.com/DanielEScherzer/website-content/commit/bdc2324414ab47d2b6b1c0f6510c12d00fac8de5

tests/data/Home.html

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
Computer Science and Political Science and graduating <em>magna cum laude</em> in 2024 with a Bachelor of Science degree. As part of my work in Computer
55
Science, I chose to write an honors thesis in my senior year, see <a href="./Thesis">here</a> for details. I continued at Tufts for graduate school, graduating in 2025 with
66
a Master of Science in Computer Science degree.</p><p>See the links in the navigation bar above for more information about my
7-
experience.</p><h2 class="subsection-header">Contact</h2><ul><li><a href="https://www.linkedin.com/in/daniel-scherzer-520539263/" target="_blank" class="external-link">LinkedIn</a></li><li>Email: <code>[email protected]</code></li></ul><h2 class="subsection-header">Blog</h2><p>I also have a blog. You can see a full index of my posts <a href="/Blog">here</a>. My latest blog post is: </p><div class="blog-preview"><h3>MergePHP, November 2025</h3><span class="blog-preview-date">Tuesday, 18 November 2025</span><p>Last week, I presented &quot;PHP 8.5: New Features from the Source&quot; for a second
8-
time, this time <a rel="noopener noreferrer" target="_blank" class="external-link" href="https://www.mergephp.com/meetups/2025/11/13/php-8-5-new-features-from-the-source.html">through MergePHP</a>, an online meetup combining
9-
multiple PHP user groups. The talk generally went better than it did the
10-
previous time I presented on that topic, at Longhorn PHP. <a href="/Blog/20251118-mergephp-talk">Continue reading...</a></p></div></div><div class="des-footer"><div class="des-footer--content">Content is © 2025 Daniel Scherzer</div></div></body></html>
7+
experience.</p><h2 class="subsection-header">Contact</h2><ul><li><a href="https://www.linkedin.com/in/daniel-scherzer-520539263/" target="_blank" class="external-link">LinkedIn</a></li><li>Email: <code>[email protected]</code></li></ul><h2 class="subsection-header">Blog</h2><p>I also have a blog. You can see a full index of my posts <a href="/Blog">here</a>. My latest blog post is: </p><div class="blog-preview"><h3>Unplanned Downtime, November 2025</h3><span class="blog-preview-date">Tuesday, 25 November 2025</span><p>Last week, I had some unexpected downtime for my website. The original cause was
8+
a power issue at the physical server, and out of my control, but an oversight of
9+
mine made the situation worse. <a href="/Blog/20251125-unplanned-downtime">Continue reading...</a></p></div></div><div class="des-footer"><div class="des-footer--content">Content is © 2025 Daniel Scherzer</div></div></body></html>

tests/data/blog-index.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<!DOCTYPE html>
2-
<html lang="en"><head><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1"><link rel="stylesheet" type="text/css" href="/resources/default-styles.css"><title>Blog index</title><link rel="stylesheet" type="text/css" href="/resources/blog-styles.css"></head><body><div class="des-navbar"><a href="/Home">Home</a><a href="/files/Resume.pdf">Résumé</a><a href="/OpenSource">Open Source</a><a href="/Work">Work</a><strong class="des-strong-page-link">Blog</strong></div><div class="content-wrapper"><h1>Blog index</h1><div class="blog-preview"><h2>MergePHP, November 2025</h2><span class="blog-preview-date">Tuesday, 18 November 2025</span><p>Last week, I presented &quot;PHP 8.5: New Features from the Source&quot; for a second
2+
<html lang="en"><head><link rel="icon" href="data:,"><meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1"><link rel="stylesheet" type="text/css" href="/resources/default-styles.css"><title>Blog index</title><link rel="stylesheet" type="text/css" href="/resources/blog-styles.css"></head><body><div class="des-navbar"><a href="/Home">Home</a><a href="/files/Resume.pdf">Résumé</a><a href="/OpenSource">Open Source</a><a href="/Work">Work</a><strong class="des-strong-page-link">Blog</strong></div><div class="content-wrapper"><h1>Blog index</h1><div class="blog-preview"><h2>Unplanned Downtime, November 2025</h2><span class="blog-preview-date">Tuesday, 25 November 2025</span><p>Last week, I had some unexpected downtime for my website. The original cause was
3+
a power issue at the physical server, and out of my control, but an oversight of
4+
mine made the situation worse. <a href="/Blog/20251125-unplanned-downtime">Continue reading...</a></p></div><div class="blog-preview"><h2>MergePHP, November 2025</h2><span class="blog-preview-date">Tuesday, 18 November 2025</span><p>Last week, I presented &quot;PHP 8.5: New Features from the Source&quot; for a second
35
time, this time <a rel="noopener noreferrer" target="_blank" class="external-link" href="https://www.mergephp.com/meetups/2025/11/13/php-8-5-new-features-from-the-source.html">through MergePHP</a>, an online meetup combining
46
multiple PHP user groups. The talk generally went better than it did the
57
previous time I presented on that topic, at Longhorn PHP. <a href="/Blog/20251118-mergephp-talk">Continue reading...</a></p></div><div class="blog-preview"><h2>The Story of PHP 8.5.0 Release Candidate 5</h2><span class="blog-preview-date">Thursday, 13 November 2025</span><p>PHP 8.5.0 Release Candidate 4, <a rel="noopener noreferrer" target="_blank" class="external-link" href="https://www.php.net/archive/2025.php#2025-11-06-1">announced</a> last week, was expected

0 commit comments

Comments
 (0)