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 times, 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 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 disk. Even high performance hard disks will perform less than SSDs. Reliability of SSD disks are 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 real-time. Data is immediately inserted to 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 login 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 database scanning data (without aggregation) is 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.