# Sizing guidelines

The Cobrowse Enterprise server is an efficient set of micro-services deployed via containers which can run on a single VM, or scale to a highly available architecture serving 100,000+ concurrent sessions across millions of end-users and devices.

In determining hardware requirements for self-hosted or on-premise deployments, please use the following numbers as a guide.

### Hardware requirements

* We recommend 1 vCPU and 1 GB memory for every 100 concurrent active co-browsing sessions, plus an extra 2 GB memory for system-level operations
* Storage requirement to run the services (excluding session recording) is 20GB total
* Network throughput as described on the section below

### Session recording

If session recording is enabled for your account, storage requirements will increase based on the total number and type of sessions which will be stored.

You may estimate how many sessions will be stored by multiplying the # of sessions per month \* the desired data retention length in months.

* **10GB** for every **100,000** web co-browsing session recordings
* **10GB** for every **10,000** mobile co-browsing session recordings with an average length of 5 minutes, and minimal video content, approximately 3.33kb/s
* **10GB** for every **1,000** mobile co-browsing session recordings with average length of 5 minutes, and video content playing 100% of the time, approximately 33.33kb/s

Conversely, if session recording is not enabled for your account, you may choose to disable certain infrastructure components to optimize costs and simplify deployment. See the [optional recording components](https://github.com/cobrowseio/cobrowse-docs-gitbook/blob/master/enterprise-self-hosting/broken-reference/README.md) section of the advanced helm configuration guide for details.

### Database sizing

The underlying database used by Cobrowse Enterprise server is MongoDB. The storage requirement will increase based on the total number of co-browsing sessions which are stored.

You may estimate how many sessions will be stored by multiplying the # of sessions per month \* the desired data retention length in months.

* **4GB** for every **1,000,000** sessions

If you plan to use MongoDB Atlas, or another service provider which limits disk IOPS by storage capacity, we recommend your database size also meets the following minimums.

* **10GB** or **100 IOPS** for every **2,000,000** device registrations

### Example container sizing: Cobrowse.io SaaS instance

{% hint style="warning" %}
This section is for illustration only. The exact container sizing will depend on your use case and will vary by traffic patterns and the platforms you use (e.g. the proxy is only needed for web sessions)
{% endhint %}

As a rough guide the split for our production environment is:

api: 35%\
sockets: 35%\
proxy: 20%\
recording: 10%

MongoDB is separate, currently around the same resource requirements as the containers.

Redis usage is minimal, so resource requirements are low, e.g. < 1/4 vCPU per node.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.cobrowse.io/enterprise-self-hosting/sizing-guidelines.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
