WordPress, infrastructure, and open source.

Practical articles on performance engineering, hosting architecture, automation, and contributing to WordPress Core — written from the infrastructure side.

InfrastructureFeatured
·7 min read

Triaging an Nginx 502 Bad Gateway on a busy WordPress server

A Nginx → PHP-FPM stack started returning 502s under load with no error in the application logs. Here's the exact triage path I used to find the cause — checking PHP-FPM workers, the socket, the error log, and the one tuning change that fixed it for good.

Read article
Infrastructure6 min read

How I diagnosed a MariaDB query eating 100% CPU on a production server

A shared hosting server on our fleet started spiking to 100% CPU with no obvious cause. Here's the exact process I used to find it — from top and mysqladmin processlist to slow query log analysis and the fix that brought load back to normal.

Read
Infrastructure7 min read

Why your WooCommerce site dies at midnight every day

A WooCommerce store on shared hosting kept going down at the same time every night. No traffic spike, no deploy, no obvious cause — just a server falling over at 00:00. The culprit was Action Scheduler, and the fix had nothing to do with WooCommerce itself.

Read
Infrastructure6 min read

Why your Linux server has 90% swap usage with plenty of free RAM

A monitoring dashboard lit up red because swap usage was at 92% on a server with 8 GB of free RAM. Counterintuitive but completely fine — and explaining why is a useful exercise in how Linux memory actually works.

Read
Infrastructure8 min read

When wp_wc_product_attributes_lookup eats your database

A WooCommerce store with 40,000 SKUs started showing slow queries against a table most people don't think about: wp_wc_product_attributes_lookup. Here's why WooCommerce regenerates it, why large catalogs make it brutal, and how to keep it from melting your database.

Read
Infrastructure6 min read

When MySQL runs out of connections because everything is sleeping

A MariaDB instance hit max_connections during normal traffic. The processlist was full of Sleep entries — connections doing nothing, but holding slots. The fix wasn't raising max_connections. It was understanding what 'Sleep' actually means.

Read
Infrastructure6 min read

When Cloudflare's bot protection breaks your own API

A WordPress REST API that worked fine in browsers started returning 403s when called from a partner's backend. The application logs were clean. The Cloudflare dashboard was the real story — and the fix needed care, because the same protection blocking the partner was also blocking real attacks.

Read
Infrastructure5 min read

How to actually block a malicious /24 (instead of playing whack-a-mole)

Repeated attacks were coming from rotating IPs in the same subnet. Blocking them one at a time was pointless — by the time I added one to the deny list, three more had taken its place. The fix was understanding CIDR ranges and where to do the blocking.

Read
Infrastructure5 min read

Why wget https://1.2.3.4 fails with an SSL error (and what SNI has to do with it)

A common debugging mistake: trying to test an HTTPS server by hitting its IP address directly with wget or curl. It always fails certificate validation, and the reason is one of the more interesting corners of how SSL/TLS actually works on the modern web.

Read
Infrastructure5 min read

Why your PHP version 'didn't change' (and how CLI and FPM lie to each other)

You upgraded PHP. `php -v` confirms the new version. The website still loads with the old one. The most common cause isn't a caching issue or a config bug — it's that PHP CLI and PHP-FPM are two completely separate things, and most hosts let you upgrade one without touching the other.

Read
Infrastructure5 min read

robots.txt is not a security tool, and it never was

A surprising number of people still believe robots.txt blocks malicious bots from crawling sensitive paths. It doesn't. It never has. It's a polite request, and the bots you most want to keep out are the ones that don't read it. Here's what robots.txt actually does, and where to put real blocks instead.

Read
Community5 min read

Receiving the Yoast Care Fund — What It Meant to My WordPress Journey

In July 2024 I found out I'd been nominated for the Yoast Care Fund. Here's the honest story behind it — the contribution work that led there, the community that pushed me forward, and what it actually felt like.

Read
Community6 min read

What Rocket.net's Five for the Future Sponsorship Actually Looks Like

Rocket.net sponsors 23 hours of my week toward WordPress.org contribution. This is what that commitment looks like in practice — Core patches, Hosting team meetings, testing, and why I believe in it.

Read
Community7 min read

Organizing WordCamp Asia 2025: What Nobody Tells You

I helped organize WordCamp Asia 2025 in Manila. The spreadsheets, the late-night calls, the moments where it almost didn't come together — and why I'd do it again without hesitation.

Read
Community5 min read

How I Became WordPress.org's Hosting Team Representative

In early 2025 I was named one of the WordPress.org Hosting Team Reps. This is what that role actually involves, how I got there, and what bridging hosting providers with Core development means day-to-day.

Read
Community6 min read

Leading Contributor Day Tables at 4 WordCamps: What I Learned

I've led Hosting and Test tables at WordCamp US, Asia, Sylhet, and Malaysia. The energy is incredible every time — but there's also a craft to helping first-time contributors get their first patch in.

Read
Community8 min read

Nine WordCamps in Two Years: An Honest Recap

From Sylhet to Portland to Basel — I attended 9 WordCamps across Asia, Europe, and North America in 2024 and 2025. What I actually got from it, and what I'd tell anyone considering their first one.

Read