20 comments

[ 4.1 ms ] story [ 37.1 ms ] thread
> What I had missed is that we deployed a new internal service last week that sent less than three GetPostRecord requests per second, but it did sometimes send batches of 15-20 thousand URIs at a time. Typically, we'd probably be doing between 1-50 post lookups per request.

That’ll do it.

less than ideal if I had to be frank.
The incredible part about this is because their backend is all TCP/IP they were literally exhausting the ports by leaving all 65k of them in TIME_WAIT, and the workaround was to start randomizing the localhost address to give them another trillion ports or so.
And then they fix the issue by using multiple localhost IPs rather than, perhaps, not sending 15-20 thousand URIs at a time
> The timing of these log spikes lined up with drops in user-facing traffic, which makes sense. Our data plane heavily uses memcached to keep load off our main Scylla database, and if we're exhausting ports, that's a huge problem.

I expect this is common.

Lite Blue on a dark Blue background. That is a new one, I have seen grey text on lite grey, but blue on blue ?

The article does work in lynx, at least I can read it.

Thank you for the post mortem on this outage.
Great write up... curious about the RCA. Thanks!
I don't really understand this architecture, but I thought Bluesky was distributed like Mastodon? How can it have an outage?
Did all 3 users notice?
Tell us more about this buggy "new internal service" that's scraping batch data :P
Golang's use of a potentially unbounded number of threads is just insane. I used to be fairly bullish on golang, but this, combined with the fact that its garbage collected, makes me feel its just unsuitable for production use.
Distributed social media goes down? hrmmm.

Email and the internet don't have "downtime." Certain key infra providers do of course. ISPs can go down. DNS providers can go down. But the internet and email itself can't go down absent a global electricity outage.

You haven't built a decentralized network until you reach that standard imo. Otherwise its just "distributed protocol" cosplay. Nice costume. Kind of like how everybody has been amnesia'd into thinking Obsidian is open source when it really isn't.

At least they aren't hiding and transparent about it unlike the big tech corps with so called SLAs
> They represent real user-facing downtime

Off-topic, but "real" feels like the new "delve". Is there such a thing as "fake" or "virtual" downtime, or why do people feel the need to specify that all manner of things are "real" nowadays?

With my SRE hat on, dare I ask... could/should this have been picked up in testing?

And then normally there's a nice discussion about how production is very different to the test environment.

Good to know the discussion about decentralization and federation had finally ended