ESRB rating: Blood and Violence (of software)
Wow this is an incredibly long and detailed read, great for desktop / integrated software developers like me to understand how these kind of attacks work and how to prevent them
So I see two ways forward for the fediverse, either:
A. Mastodon has to be refactored / rewritten to use Ruby Fibers, the non-blocking concurrency feature for Ruby
OR
B. We have to switch to a different Fediverse software that is based on a more modern software development framework.
Personally I think B might be the best option, and my money is on GoToSocial!!
Mastodon doesn't fork off a new process or spawn a new thread for every request, but it's darn close to it.
How did the web evolve past this scalability challenge? It didn't necessarily involve buying a faster computer. The developers of the venerable `nginx` web server famously struck first blood when they cracked what they called the "c10k" problem for the first time. (handling 10 thousand simultaneous connections to the same server application).
This happened in the early 2000s, and the nginx server in question was consuming only about 2.5MB of RAM during the load test.
This style of client and server application has its roots in things like `inetd` (internet daemon) and CGI (common gateway interface). Benno Rice explains in a section of his excellent presentation covering the history of linux and unix:
https://video.strongthany.cc/watch?v=o_AIw9bGogo&t=4m58s
> [Then things changed...] the internet happened. That inetd model was great when [you were dealing with a small amount of stuff going on], like, [only a few users would have telnet connections] ...The web looked like it would work that way too, and then it became really really popular. And so you end up with situations where forking off a process to handle every single connection doesn't really scale that well.
Many Mastodon server users and admins have mentioned that the load from all the new users is causing a strain on the system -- large outbound queues, delays on messages, slow page load times, etc.
The good news is that these problems don't have to be solved by buying a more powerful computer.
The Mastodon software uses an old (circa 90s and earlier) way of organizing its code, which I like to call "one-thread-per-request with blocking IO"
One of them is GoToSocial, which I see as a dark horse poised to surpass Mastodon and become the best general purpose Fediverse server implementation.
https://nlnet.nl/project/GoToSocial/
Congrats to everyone who has worked incredibly hard to make that project a reality!
Look at all the cool projects that NLNet is funding right now !!! 😮
Can I get some voluntary load testing from #fediverse users lol, please boost/interact with this post.
I created an account for my dogs to try out pixelfed: @fedipugs
So far its been a bit rough (no video support, hyperlinks get broken 🪦)
But if you like cute pet pictures maybe it could be worth a follow, I'll try to post when I can and occasionally maybe repost older stuff from the instagram that my partner made in the past.
```
Updating crates.io index
Fetch [===================> ] 82.56%, (163401/213323) resolving deltas
```
Ok, tinygo is definitely not stable enough for this, moving on to trying rust instead https://docs.rs/age/latest/age/ 👀
From yesterday: research into related memory leak here: https://github.com/tinygo-org/tinygo/issues/1140#issuecomment-1314608377
Streaming again, getting to work on running FiloSottile/age to run in the web browsa (compile golang to WASM with tinygo compiler)
music rn: 🎸🎺 Less Than Jake 🧨🍺
Querying the db showed:
```
# SELECT username FROM accounts WHERE id=-99;
username
----------------
localhost:3000
```
Which corresponded with the value in the curl
```
"preferredUsername": "localhost:3000",
```
So a quick fix was to connect to psql and run the following update: UPDATE accounts SET username = 'destituent.social' WHERE id=-99;
Now I can toot at my friends over on pixie.town!
Hopefully I didn't burn too many of your CPU cycles @f0x and @forestjohnson thanks!
I am a web technologist who is interested in supporting and building enjoyable ways for individuals, organizations, and communities to set up and maintain their own server infrastructure, including the hardware part.
I am currently working full time as an SRE 😫, but I am also heavily involved with Cyberia Computer Club and Layer Zero