Countly can serve up to several million users on a single server, and it will work perfectly out of the box. With a modern stack on top of Node.js and MongoDB, this performance is far from other web analytics tools which can be installed on-premise.
Most of the time, a moderate server can handle several hundred users online and you will only need to deal with the uptime and general server maintenance.
However, sometimes it might be necessary to tweak the performance of the underlying system, i.e. database and server, in order to make Countly work in a very high-traffic environment. With high traffic, we mean a few billion hits on the server per month.
Countly Enterprise Edition can serve tens of billions of hits per month on a scalable infrastructure with sharding technology. For more information about Enterprise Edition and all of its features, see this link.
Recommended Server Configuration
There are several general recommendations for both Community Edition and Enterprise Edition, depicted below.
- Running your Countly instance on a dedicated or barebone server greatly increases network throughput and CPU performance.
- Instead of using hard disks, using SSD will also decrease the time to write on a disk. Even high-performance hard disks will perform less than SSDs. The reliability of SSD disks is also much higher than traditional disks (0.6% per year vs. 2.0% per year).
- Countly will benefit from free RAM on the server. At the very least, the index of your MongoDB instance should reside in the RAM. Make sure you have at least 4GB of memory - but the more the better!
- Countly performance is heavily dependent on MongoDB performance, so we suggest you read Monitoring & Diagnostics for MongoDB.
By default, Countly operates in real-time. Data is immediately inserted into MongoDB as it arrives, therefore there is no "work sans-real-time" option with Countly. The majority of work done is writing the data to the memory and/or disk.
When you log in to the administration panel, you only read aggregated data, which is in turn visualized on the browser. This is a very lightweight process compared to writing data to MongoDB. Two features that need reading from the database for scanning data (without aggregation) are Flows and Drill.
While Countly Community Edition does not produce very large data sets, this is not the case with the Enterprise Edition, where each and every event is stored on Countly Drill database. We provide sharding and replica set configurations for Enterprise Edition. For the case of Community Edition, the primary bottleneck would be caused by a lack of RAM and improper server configuration/setup.
If you are running Countly on a high traffic server, we recommend using Enterprise Edition.