The Jasper Server community edition is great for generating PDF and Excel reports. It provides
easy reporting and analytics capabilities. But it’s not tuned for performance out of the box. We recently built a reporting application that had to send out more than 3000 concurrent scheduled reports each day. This article details out performance tuning to achieve the requirement.
The Jasper Server is a beast that moves very slow out of the box. It could handle about 100 concurrent report requests. After that it would fail and that too silently. The community wiki has a nice page for improving the performance. Here’s what worked for us.
—
Jasper Reports Community recommends using JNDI data source to configure connection pool within the container. Head to /jasperserver/META-INF/context.xml file under Tomcat. In context.xml, tune the jdbc/jasperserver resource, and modify the following attributes as per your need
—
Default setting of JVM options is not suitable for production environment. To change JVM options you will have to modify JAVA_OPTS variable in JASPER_SERVER-DIR/apache-tomcat/bin/setenv.xml file. Modify heap and stack size according to RAM of machine
—
For tuning Postgresql for production environment as default settings are not suitable for production, change following properties in JASPER_SERVER-DIR/postgresql/data/postgresql.conf file as per your need
—
You can increase the value of property maxSize in /jasperserver/WEB-INF/applicationContext.xml. However, you need to be careful with the values.