Our gracious host @JonahAragorn asks that we sign up on a server on join-lemmy.org or sign up on kbin.social instead of directing everybody to use the lemmy.one server specifically, in order to distribute the load.
Thank you!
It looks like about the 1k active user mark is where the Lemmy instance starts to use too many resources. lemmy.ml has blown past that with 1.7k active and almost 40k total registered users, and they’re having a lot of performance issues over there.
Hope they can build a good scaling framework into the Lemmy backend pretty damn quick, because nobody is going to survive the Reddit influx otherwise.
To clarify, you’re saying this is an inherent issue in the Lemmy code, not an issue with hosting or whatever? So it’s not currently possible for a Lemmy instance to handle a couple thousand users?
I have a very limited understanding, but, yes. A few thpusand is ok so far, but The database managing post contents becomes the bottleneck as it simply cannot be updated fast enough. No single instance can handle that much traffic, it has to be horizontally scaled somehow.
I wish I had the time to dedicate to learning enough to know what you’re talking about. This kinda stuff sounds so interesting.
Ok, so the best analogy is: a database is a warehouse. Every user has a shelf in this warehouse, and they add and take stuff to it at random. The workers in the warehouse move stuff in and out of the doors as orders (user requests) come in and out.
You can build the warehouse taller and wider to hold more shelves (vertical scaling of hardware), but only to a point before the forklift trucks can’t reach and driving across the warehouse for one order would take too long.
You can similarly add more workers (CPU power) and more doors (faster storage/memory) to your warehouse to handle more orders at one time, but these also have limits because the warehouse is only so big. And there’s eventually a point where no amount of workers or doors or shelf space will improve throughput, because the roads around the warehouse are clogged with trucks.At this point the obvious solution is horizontal scaling- build a new warehouse somewhere else nearby, and a small office building (load balancer) that directs new orders to each of the warehouses evenly. Then you have the office occasionally check in with both warehouses to make sure they both have the same stuff to fulfill any given order (synchronizing instances). And as orders continue to increase, you can just keep adding more and more horizontal warehouses- all of which are individually somewhat small and simple, but effectively infinitely scalable compared to the vertical mega-warehouse we tried to build originally.
Lemmy tries to build in the horizontalness by having separate instances federate and share data automatically without the need for that “front office”. However the issue still stands that individual instances are going to need to handle hundreds of thousands of users for the Lemmy ecosystem to really thrive, and that is going to take a ton of back end database engineering to allow individual instances to scale as well as the fediverse network as a whole.
Well shit. I’m gonna go add Database Engineering to my resume now. Lol
Seriously, though. Thanks for the great explanation. Wasn’t expecting that.
Of course, glad to help!
deleted by creator
I purchased (havent deployed) lemmy.club yesterday and I’m going to look in to deploying via kubernetes this weekend. We’ll need some instances that can horizontally scale so that we can absorb as many users as we can from the APIcalypse.
I’m slightly worried about the costs, but I’m loving the platform so far and am willing to do as much as I can!
Oops, saw this too late. Should I figure out how to delete the account, just not use it, or what?
You’re welcome to use this account :)
I just want to avoid everybody joining lemmy.one.
I’ve been encouraging everybody at reddit to join lemmy.one in preparation for the exodus.
Should I stop doing that?
lemmy.one is the perfect catchall destination name.
It’s fine to register here, I mostly just don’t want to create a misunderstanding that you have to register on lemmy.one to join local communities here, which can be joined from any instance. And I’m telling Subreddit moderators to link people to join-lemmy.org instead of lemmy.one in announcement posts in the spirit of decentralization.
What happens when /r/atheism wants to join this community through lemmy.one?
If the current mods of r/atheism on Reddit want to create a new community here on lemmy.one, they can message me as described here: https://lemmy.one/post/41
If people are just looking for an existing atheism community here on the Lemmy network, there are atheism communities already on other servers, such as !atheism@lemmy.ml.
I think we should have new users go to join-lemmy and specifically go to like near the bottom and register there to decentralize lemmy thorooughly
Thanks. It’s clear I don’t understand how this works. I was wondering if/when reddit implodes if this place would be able to handle the traffic. Again, don’t think I understand how this works. I’m learning. Thanks again.
So yeah… whatever instance your account is associated with can subscribe to any community from any other instance. You just have to view it “through” your instance that you’re logged into.
So, say someone has their account with lemmy.ml - they would go to: https://lemmy.ml/c/exchristian@lemmy.one and they could subscribe to it using their lemmy.ml account, and would be able to interact with it through their lemmy.ml account (rather than having to sign up for lemmy.one to subscribe to it).
It also works visa-versa. Say someone has a Lemmy.one account and they want to subscribe to a community on Lemmy.ca… for instance, WowThisLemmyExists:
They login to lemmy.one, and then go to https://lemmy.one/c/wowthislemmyexists@lemmy.ca and they could subscribe to it using their lemmy.one account.
The only caveat is that the instance that your account is on has to have been “federated” (connected) with the instance that the community is on. (Which you can check if you go to the bottom of the page and click “instances”)