The separate child JVM process option is available starting from the eazyBI version 3.4.0.
By default, eazyBI is running inside the same Jira JVM process and is sharing JVM heap memory and other resources with Jira and all other Jira add-ons.
eazyBI report queries are executed using the embedded Mondrian OLAP reporting engine. When you perform complex queries which need to access all issues data, then Mondrian OLAP engine can use all available Java heap memory for the report results cache. It can happen when doing either drill through detailed issues, or when some measures need to be calculated for all issues, or when cross-joining many dimensions in the report. If Mondrian OLAP engine will use all available JVM process heap memory, then it might significantly slow down the overall Jira performance.
Therefore, the new separate "child JVM process" option is added for eazyBI. If you enable it, then the eazyBI add-on will launch a separate child JVM process and report execution queries will be proxied to this child process. CPU and memory expensive Mondrian OLAP engine operations will be performed just in this child process and will not affect the main Jira JVM process heap memory usage.
You can enable the separate child process in the eazyBI settings page (where you initially specify the database connection). You need to specify the following options:
The child process will listen on this TCP/IP port for requests from the eazyBI plugin. By default, the port number 3801 is suggested. If you run several Jira instances with the eazyBI plugin on the same server, then specify a different port number in each instance.
- JVM options
Additional JVM options that you want to use for the child JVM process. By default, the following options are used:
-Xms256m(set initial JVM heap size to 256MB),
-Xmx1024m(set max JVM heap size to 1GB),
-XX:MaxPermSize=256m(set JVM PermGen size to 256MB – not used for Java 8). If you would like to increase JVM max heap size to, e.g., 2GB, then specify "JVM options" as
Please ensure that the server, where Jira is running, has enough free memory for the additional child process. If the operating system will not be able to provide required memory for the child process, then it will cause memory swapping of disks and a slow performance of the server.
The child process settings are stored in the Jira home directory in the
eazybi.toml file (where database connection parameters are stored as well). In this file automatically generated
client_secret settings is stored as well – it is used for signing the authorization tokens when making the requests from eazyBI to the child process.
After updating the child process settings, the child JVM process will be automatically started or stopped. If you visit the settings page again, then you will see the status of the child process – Running or Not running. If it is not running, then please check
eazybi-child.out log file (see below).
The child process will create and use the following log files in the Jira home directory
eazybi-child.log– if the child process is successfully started, then report requests that are proxied to this process are logged in this log file (which previously were logged in the main
eazybi-child.out– the initial child process startup messages are logged in this file. If the child process was not started, then most probably you will see the error in this file. Send this file to eazyBI support if you need help to understand the cause of the error.
eazybi-child.pid– in this file the child process PID (process number) is stored.
There is a separate Child process section in the system administration Troubleshooting page (which is shown if the child process is enabled). In this section you can see:
- The current status of the child process.
- JVM heap memory statistics for the child process – total memory (currently allocated memory), free memory (from the total memory), max memory (the max limit to which the total memory can be extended – corresponds to the
- JVM process CPU usage (not available on Windows).
If necessary (e.g. if the child process consumes too much CPU or if the process is stuck), you can restart the child process from here. If you want to change the child process options (e.g. JVM max memory option or the port number) then go to the system administration Settings page.
In the Log files section you can also view the last 1000 lines of