Earlier quoted context omitted.
Not the original poster but I do have some ideas. Official Bluesky clients could randomly/round-robin access 3-4 different appview servers run by different organizations instead of one centralized server. Likewise there could be 3-4 relays instead of one. Upgrades could roll across the servers so they don't all get hit by bugs immediately.
If multiple personal data servers (pdses) share the same set of posts how would we guarantee that they are tamper resistant to third parties?
Bluesky April 2026 Outage Post-Mortem
61–70 of 85 posts
Re: Bluesky April 2026 Outage Post-Mortem
#62Earlier quoted context omitted.
If multiple personal data servers (pdses) share the same set of posts how would we guarantee that they are tamper resistant to third parties?
PDSes should be sharded not replicated. Your posts live on your PDS which lives in one place (although it can move).
Re: Bluesky April 2026 Outage Post-Mortem
#63> 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.
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.
Re: Bluesky April 2026 Outage Post-Mortem
#64Re: Bluesky April 2026 Outage Post-Mortem
#65Earlier quoted context omitted.
What's stopping us from doing both?
Cost and complexity tradeoffs. IMO the relay/appview is the current bottleneck.
Re: Bluesky April 2026 Outage Post-Mortem
#66And then normally there's a nice discussion about how production is very different to the test environment.
Re: Bluesky April 2026 Outage Post-Mortem
#67Earlier quoted context omitted.
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.
This is a pretty interesting solution. I could see how this could useful for certain kinds of problems (as part of a ddos attack mitigation for example).
Re: Bluesky April 2026 Outage Post-Mortem
#68Earlier quoted context omitted.
Rust's async doesn't have this issue. Or at least, it's the same issue as malloc in an unbounded loop, but that's a more general issue not related to async or threading. 15-20 thousand futures would be trivial. 15-20 thousand goroutines, definitely not.
I don't know enough about rust to confirm or deny that -- but unless rust somehow puts a limit on in-flight async operations, I don't see how it would help. The problem is not resource usage in go. The problem is that they created umpteen thousand TCP connections, which is going to kill things regardless of the language.