Riva CRM Integration - Documentation and Knowledge Base

Calculate Riva Server Requirements for Scalability

Article ID: 324
Last updated: 28 Mar, 2018
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,

  • What are the recommended specs for a Riva server that will be licensed for 400 accounts?
  • How often synchronization should occur?
  • How many execution threads should be assigned without overloading the server?

General Considerations

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:

  • Is the email environment or CRM installed in a single data centre?
  • How many API access servers, like Exchange Web Services (EWS) or Riva Connector for IBM Notes, do you currently have? Are they clustered? How busy are they before you implement Riva?
  • Would you consider adding a dedicated API access server for Riva so the other services are not impacted by Riva?
  • How busy are your target servers?
  • How many object types are you going to sync?
  • How many users are going to synchronize?
  • What is the polling interval?
    • Which modules should be synced?
    • Is the synchronization for each module uni-directional or bi-directional?
    • Are users allowed to delete records of each module type in CRM or in their mailbox?
    • If records are deleted, what should occur to the synchronized entry in the target system?
  • Do you have a real-time Disaster Recovery data centre?

See also Recommended minimum requirements scaled per number of Riva users.

Calculating Resources

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.

Number of threads

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:

  1. Determine the number of seconds used by a "null" sync.

    Note: A "null" sync is a sync cycle that has no data to sync between the systems. The time required for a null sync depends on the bandwidth between Riva and the target servers, the number of synced modules, the number of sync options, how busy the target systems are, and the latency in receiving communication from the target systems.

  2. Calculate the number of threads as follows:

    [number of threads] = [number of users] * [number of seconds per base null sync] / [number of seconds of polling sync interval].

    Example: 400 users * [12 seconds / base null sync / user] / [600-second polling interval] = 4800 / 600 = 8 threads.

    Tip: In Riva 2.4.46 or higher, you can use the Thread Calculator.

  3. For the initial sync, increase the number of threads, in one of the following ways:

    • Add 50% of the base threads to compensate for the heavier traffic when the system starts to sync data. During the initial sync, monitor the Riva server's performance and the impact on the target servers.

      – or –

    • For better accuracy, do as follows:

      1. Run a series of tests that reflect typical sync usage of your system over a defined period of time.
      2. Recalculate the number of threads based on this usage.
        The higher the number of threads, the faster the sync cycle will be completed.
      3. Configure the Riva server with this new value.
      4. Determine the impact on the Riva server, email server(s), and CRM system.

(Riva 2.4.46 or higher; optional.) To use the Thread calculator:

  1. Navigate to the Thread Calculator as follows:

    1. In the Riva Manager application, on the menu bar, select Policies.

    2. In the right pane, double-click the policy that you want to calculate the number of threads for.

    3. In the Edit CRM Synchronization Policy window that appears, select the Connection Options tab.

    4. In the right pane, near the top, select Calculator.

  2. In the Thread Calculator, enter the following values:

    • Sync Interval: The peak-times interval value set on the Scheduling tab — or some other value that you want to investigate.

    • User Count: The number of syncing users.

    • Average Sync Time Per User (mm:ss): For a first approximation, use the null sync value determined earlier.

  3. Select Calculate.

    Result: The Recommended Thread Count displays the calculated number of threads.

  4. If the recommendation is supported by the Riva server, select Apply.

  5. Prepare for extra traffic for the initial sync.


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.

Disk Storage Space

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.

Minimum Recommended Resources

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.

Other Examples

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.

Applies to

  • Riva On-Premise server.

Article ID: 324
Last updated: 28 Mar, 2018
Revision: 9
Views: 10412
Also read

Also listed in