Scaling for Enterprise#

Mattermost is designed to scale from small teams hosted on a single server to large enterprises running in cluster-based, highly available deployment configurations.

  • Mattermost supports any 64-bit x86 processor architecture

  • Databases supported: PostgreSQL, Amazon RDS for PostgreSQL

  • Storage supported: Amazon S3 or a local filestore

Server requirements vary based on usage and we highly recommend that you run a pilot before an enterprise-wide deployment in order to estimate full scale usage based on your specific organizational needs.

Available reference architectures#

The following reference architectures are available as recommended starting points for your self-hosted Mattermost deployment, where user counts refer to the number of concurrent users for a given deployment. The number of concurrent numbers is commonly lower than the total number of user accounts.

Testing methodology and updates#

All tests were executed with the custom load test tool built by the Mattermost development teams to determine supported users for each deployment size. Over time, this guide will be updated with new deployment sizes, deployment architectures, and newer versions of the Mattermost Server will be tested using an ESR.

At a high level, each deployment size was fixed (Mattermost server node count/sizing, database reader/writer count/sizing), and unbounded tests were used to report the maximum numbers of concurrent users the deployment can support. Each test included populated PostgreSQL v14 databases and a post table history of 100 million posts, ~3000 users, 20 teams, and ~720000 channels to provide a test simulation of a production Mattermost deployment.

Tests were defined by configuration of the actions executed by each simulated user (and the frequency of these actions) where the coordinator metrics define a health system under load. Tests were performed using the Mattermost v9.5 Extended Support Release (ESR). Job servers weren’t used. All tests with more than a single app node had an NGINX proxy running in front of them.

Full testing methodology, configuration, and setup is available, incluidng a fixed database dump with 100 million posts. Visit the Mattermost Community and join the Developers: Performance channel for details.

Mattermost load testing tools#

Mattermost provides a set of tools written in Go to help profiling Mattermost under heavy load, simulating real-world usage of a server installation at scale. The Mattermost Load Test Tool estimates the maximum number of concurrently active users the target system supports, and enables you to control the load to generate.

Visit the Mattermost Load Test Tool documentation on GitHub for details on getting started with the tools, and visit the Go documentation for code-specific documentation details.

Important

  • The Mattermost Load Test Tool was designed by and is used by our performance engineers to compare and benchmark the performance of the service from month to month to prepare for new releases. It’s also used extensively in developing our recommended hardware sizing.

  • We recommend deploying Prometheus and Grafana with our dashboards for ongoing monitoring and scale guidance.

  • If you encounter performance concerns, we recommend collecting performance metrics and sharing them with us as a first troubleshooting step.