Skip to content

Latest commit

 

History

History
55 lines (36 loc) · 5.84 KB

scaling-for-enterprise.rst

File metadata and controls

55 lines (36 loc) · 5.84 KB

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.

Important

Due to constraints in testing, the proxy instance specifications were fixed for all the tests from which we derived these reference architectures. This was done to avoid a combinatorial explosion of variables in tests, but it resulted in minor gaps in our understandings of certain aspects of the reference architectures. In particular, the proxy instance is overspecified for the smaller user counts.

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, ~200000 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.

For the last test of 200K users, further infrastructure changes were made. Elasticsearch nodes were added. A Redis instance was added, and multiple NGINX proxies were used to distribute traffic evenly across all nodes in the cluster. More details can be found in the page </scale/scale-to-200000-users>.

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