How can I tune Evolven?

This FAQ will list the different ways to tune an Evolven Server, in order to improve performance.

Java JVM

The Evolven server runs in a JAVA JVM. Tuning a JVM is discussed in length here:
https://docs.oracle.com/cd/E13222_01/wls/docs81/perform/JVMTuning.html

Tomcat memory usage:

When setting Tomcat/Evolven max memory It is recommended to leave at least 2GB free for the OS.

To edit this setting right click on tray icon and click “Configure Tomcat Settings” set value of Xmx (e.g. - Xmx 8192M is you want to allocate 8GB of memory for the Evolven server’s JVM)

Tuning DB

Most MSSQL DBAs have their own techniques for tuning MSSQL. Here is a good reference for tuning:
https://technet.microsoft.com/en-us/library/ms190392(v=sql.105).aspx

It is important that the amount of memory you allocate for the DB should not exceed the amount of real memory (not Virtual memory) you have on the machine. The default installation tends not to limit the memory for MSSQL Server, which can lead to problems. Allocating virtual memory will give a big performance hit since it uses the machine's file system (which is much slower).

Parameters to Tune Evolven Server

All these parameter can be found in Evolven Server Settings under “Performance” section.

  1. Search:
    • Searching environments configuration (e.g. data collected by the Evolven agents).
    • In large environments it is highly recommended to set up an elasticsearch dedicated machine.
    • The machine should have the same spec as a single Evolven server and have a very large hard disc. (Recommended at least a few TB).
  2. Paging
    • This section defines the maximum number of elements loaded into a user session.
    • Most of these parameters define the maximum results returned to the Evolven UI for view, and have no effect on Evolven server itself (just on the clients)
    • The following are exceptions which do impact the Evolven Server. These define the number of changes loaded into an analysis session. Setting these values to a high number can cause performance/memory issue in Evolven server, if the defaults are not enough it is recommended to first advice with Evolven support and see how the data can be cleansed to reduce noise in the system.
      • Maximum number of changes in analysis session
      • Maximum number of comparison diffs in session
  3. Comparison:
    • Defines the maximum number of simultaneous comparisons executed on a single Evolven server. As well as the number of threads used to run each comparison.
    • Note that the maximum number of Threads running a comparison on a single server is: “Concurrently running comparisons” X “Thread count per comparison”
  4. Scheduled Tasks:
    • Defines the maximum simultaneous number of scheduled reports running on a single Evolven server.
  5. Cache:
    • By default Evolven server stores in cache all the changes from the last 7 days, to allow fast access to recent data.
    • In large environments this section is irrelevant since the system will disable cache automatically.
  6. UI & API performance
    • Option to zip response
    • Option to load UI in debug mode
  7. Misc
    • Agent Thread Count: The number of threads used to detect changes in agents. The default value if 1 and should be sufficient to handle up to several thousands of agents. If needed this number can be increased to one of 2,4,5 To detect this is indeed a bottleneck see server state (Total Pending , Total Pending Tree , Total Pending Change Detection)
    • Policy Thread Calculator: Number of threads used to calculated policy results

Agent load balancing (Clustered Environment)

Each time the agent registers to the Evolven server in a clustered environment, Evolven checks which instance of Evolven server is most available (e.g. which Evolven Server has the least number of agent connected to him). The agent is then redirected to this Evolven server and will continue communicating with this instance until agent is restarted. When using a load balancer to handle agents distribution this internal mechanism should be disabled.

Important note: It is imperative that the external proxy be set to use a sticky IP.