-
Notifications
You must be signed in to change notification settings - Fork 592
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add docs to achieve 200K scale. #7812
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,64 @@ | ||||||
Scale Mattermost up to 200000 users | ||||||
==================================== | ||||||
|
||||||
.. include:: ../_static/badges/ent-selfhosted.rst | ||||||
:start-after: :nosearch: | ||||||
|
||||||
This page describes the Mattermost reference architecture designed for the load of up to 200000 concurrent users. Unsure which reference architecture to use? See the :doc:`scaling for enterprise </scale/scaling-for-enterprise>` documentation for details. | ||||||
|
||||||
- **High Availability**: Required | ||||||
- **Database Configuration**: writer, multiple readers | ||||||
|
||||||
.. note:: | ||||||
- Usage of CPU, RAM, and storage space can vary significantly based on user behavior. These hardware recommendations are based on traditional deployments and may grow or shrink depending on how active your users are. | ||||||
- From Mattermost v10.4, Mattermost Enterprise customers can configure `Redis <https://redis.io/>`_ (Remote Dictionary Server) as an alternative cache backend. Using Redis can help ensure that Mattermost remains performant and efficient, even under heavy usage. See the :ref:`Redis cache backend <configure/environment-configuration-settings:redis cache backend>` configuration settings documentation for details. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we need the Remote Dictionary Server parenthesis?
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't know, this was already there. Will defer to Carrie. |
||||||
- While the following Elasticsearch specifications may be more than sufficient for some use cases, we have not extensively tested configurations with lower resource allocations for this user scale. If cost optimization is a priority, admins may choose to experiment with smaller configurations, but we recommend starting with the tested specifications to ensure system stability and performance. Keep in mind that under-provisioning can lead to degraded user experience and additional troubleshooting effort. | ||||||
|
||||||
Requirements | ||||||
------------ | ||||||
|
||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| **Resource Type** | **Nodes** | **vCPU/ | **AWS Instance** | | ||||||
| | | Memory (GiB)** | | | ||||||
+========================+===========+================+=======================+ | ||||||
| Mattermost Application | 14 | 16/32 | c7i.4xlarge | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| RDS Writer | 1 | 16/128 | db.r7g.4xlarge | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| RDS Reader | 6 | 16/128 | db.r7g.4xlarge | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| Elasticsearch cluster | 4 | 8/64 | r6g.2xlarge.search | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| Proxy | 4 | 32/128 | m6in.8xlarge | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
| Redis | 1 | 8/32 | cache.m7g.2xlarge | | ||||||
+------------------------+-----------+----------------+-----------------------+ | ||||||
|
||||||
Lifetime storage | ||||||
---------------- | ||||||
|
||||||
.. include:: ../scale/lifetime-storage.rst | ||||||
:start-after: :nosearch: | ||||||
|
||||||
Estimated storage per user, per month | ||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||||
|
||||||
.. include:: ../scale/estimated-storage-per-user-per-month.rst | ||||||
:start-after: :nosearch: | ||||||
|
||||||
Example | ||||||
~~~~~~~ | ||||||
|
||||||
A 200000-person team with medium usage (with a safety factor of 2x) would require between 21.12TB :sup:`1` and 105.6TB :sup:`2` of free space per annum. | ||||||
|
||||||
:sup:`1` 200000 users * 5 MB * 12 months * 2x safety factor | ||||||
|
||||||
:sup:`2` 200000 users * 25 MB * 12 months * 2x safety factor | ||||||
|
||||||
We strongly recommend that you review storage utilization at least quarterly to ensure adequate free space is available. | ||||||
|
||||||
Additional considerations | ||||||
------------------------- | ||||||
|
||||||
.. include:: ../scale/additional-ha-considerations.rst | ||||||
:start-after: :nosearch: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we want to add here that 200k concurrent users translates to approximately 500k supported users, depending on expected usage?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMO we should retire that heuristic. The ratio of concurrent:total varies highly from customer to customer. It is clearer to simply focus on concurrent users.