Scaling Mastodon?

Hi, I’ve seen a variety of Mastodon on Aarch64 resources, including a very nice tutorial on running an instance on OCI: GitHub - xmflsct/oracle-arm-mastodon

But I’ve noticed several Mastodon instances falling over under load - and scaling applications like this should be a strength of Ampere. Anyone interested in using Mastodon as a reference workload for scaling on OCI or GCP? I imagine it will be more write-heavy of a workload than WordPress - should be fun to dig in and see how well it scales!

@vielmetti I remember you mentioned getting Mastodon working on a Raspberry Pi when we spoke recently - any pointers to good resources? Interesting in helping with a new instance just for kicks?

1 Like

I was pointed to this awesome blog post today from Tim Nolte on running Mastodon on A1 instances too! Still single-VM, but quite awesome! https://www.timnolte.com/2022/11/26/installing-mastodon-on-an-oracle-cloud-infrastructure-ampere-arm64-always-free-instance/

1 Like

Kris Nova, one of the admins for hachyderm, a popular open source community instance of Mastodon, has been posting some awesome articles about their experiences scaling Hachyderm:

They are nhighly recommended! Chock full of great advice on scaling any web service, and incident notes from real-life scaling issues!

2 Likes

Having been operating my own micro-instance for about a year (including an exciting mastodon 3.4 → 4.0 migration) I would not recommend the “from scratch” approach laid out in Tim’s blog post. It’s nice for “getting to know” Mastodon from a dev perspective, but this set-up will ultimately be hard to maintain and to automate (let alone back up, restore, monitor, scale, etc.).

Nova’s posts are a lot more helpful in this regard - they are operating a distributed, geologically co-located instance for tens of thousands of active users, including multiple big accounts with thousands of followers. The posts focus on operations and on scaling and share quite a few valuable insights.

For single-node deployments of a maintainable, scalable Mastodon set-up we’ve been dabbling in deployment automation in the Flatcar project a while ago: GitHub - flatcar/flatcar-mastodon: Automation for deploying a Mastodon node on Flatcar . While this approach takes all the excitement out of the initial set-up (which is what Tim’s post exclusively focuses on), it comes with maintainability, observability, and back-up built in. It’s entirely based on Docker container images (the repo only contains meta-data and scripts to set things up) so it should transiently work on ARM64 (though I haven’t tried that yet). The back-up integration in particular allows for “cloning” a node into a larger instance size, hence vertically scaling the service.

1 Like

Addendum: this one’s pretty nice - also from the Hachyderm folks: Scaling Mastodon: The Compendium | Hazel Weakly

TL;DR: everything scales reasonably well until you hit postgres limits, at which point you need to tune postgres :smile: This reflects my own experience with scaling Mastodon.

1 Like

Here are two other links for information on Mastodon. This post is about the architecture of Mastodon and this one is a step by step guide on how to create an Mastodon instance. There are some quirks to the tutorial.

We will get a tutorial that will walk you through all the steps to get Mastodon up and running soon.

1 Like

I also liked the official “Scaling up your Mastodon server” documentation: Scaling up your server - Mastodon documentation