In Riva 2.4.46 or higher, a Thread Calculator is provided to help calculating the number of threads required for a Riva server.
Assuming that the base server is a Windows server on a 64-bit processor architecture with 1GB of RAM on a VMWare VM,
For hosted CRM and/or email environments, scalability factors include bandwidth limits, response times, and API request limits. Most hosting providers have sufficient infrastructure to handle the increase in usage. Some may have different servers specific for automated API-based systems. For larger scale deployments, contact the hosting provider to ensure adequate resources are available. For on-premise systems, issues of bandwidth and response times are much less important for scalability, but the impact of the increased usage of the system does need to be considered.
Important Note: A Riva deployment increases the number of concurrent connections that access both the email and CRM systems. This additional usage may require configuring an additional resource (for example, Exchange Client Access Server or Riva Connectors for IBM Notes) by adding another server to your cluster. Another option is to add a dedicated server for Riva to avoid having a negative impact on performance for end-users of your current infrastructure. Larger deployments may already have a cluster of servers dedicated to support ActiveSync and API-based access. This is the ideal solution for scalability of data integration with Riva.
Following are installation and scalability questions for your Riva server:
In addition to the number of users being synchronized, Riva's scalability is determined by the number of concurrent active threads, the frequency of the polling, and the number of configured sync options. Keep in mind that there will be a much higher load on the systems during the first sync cycle. The first sync cycle will cause a temporarily high load because of the amount of historical data that is synchronized. This includes the number of contacts, appointments, tasks, opportunities, cases, and other modules that are being synchronized for the first time. After the first sync has completed, Riva syncs only the new and modified data, thereby decreasing the server load.
The number of threads required to sync every user every sync cycle depends on the number of users and the time interval between syncs.
To calculate the base number of threads required to sync your users for a specific sync interval:
In an average environment, each Riva thread needs 20 to 30 MB of memory. That works out to 240 to 360 MB of RAM for a 12-thread configuration.
The Riva CRM Monitor application and the Riva CRM Agent service also use memory.
Based on the known usage of various systems, each user's sync data can require between 10 and 20 MB of disk storage on the high end. In the example, for 400 users, Riva requires approximately 4 GB of disk space usage, not including logs.
Because the amount of logging can be substantial, for enterprise deployment, the logs can be redirected to SQL databases on another server to improve performance and improve the ability to report and monitor the current activity.
For the example, we recommend a minimum of 1.5 GB of memory and 20 GB of disk space to be available for Riva on the server and a minimum of 2 MBs of R/W disk IO.
See also Recommended minimum requirements for environments with 100 to 499 users and scroll up or down for other scaled requirements.
By managing the number of threads, the polling intervals, and storage and logging and by deploying Riva in a multi-server configuration, Riva can scale to satisfy the needs of the largest enterprise implementation.
The number of threads also represents the number of concurrent connections through the email server environment and concurrent calls to the CRM server.
Example 1: For 20,000 users with a 15-minute synchronization interval, synchronizing a single module, where each sync cycle takes 2.5 seconds, Riva needs approximately 65 concurrent threads.
Example 2: For 5,000 users with a 30-minute synchronization interval, synchronizing multiple modules including contacts, calendars, tasks and emails, where each sync cycle takes 20 seconds, Riva needs approximately 60 concurrent threads.