A Jaspersoft BI services implementation can range from a simple single cpu service reporting on a local application database, to a cluster of JasperReports Servers connecting to dozens of various data sources running on as many other servers. Performance issues can range from problems with a particular JasperReports Server to network throughput issues for the many data sources that server may want to query against. Below is a diagram that scopes the immediate environment that JasperReports Server runs in. Other than the user's Browser, many or all of these components could reside on the same server instance (either physical or virtual).
A typical minimal configuration would be an Apache Web Server, Tomcat Applications server, Repository database server (Postgres or MySql), and the JasperReports Server. Larger implementations can include clustered JasperReports Servers (v5.5) working behind a load balancer, all using the same repository. Hardware requirements and considerations for both single server and cluster implementations are described in the wiki page, Hardware Requirements for JasperReports Server.
Component Performance Issues
Client Web Browser
At the browser level, you can do a lot of testing on both performance and checking how elements are displayed. Jaspersoft recommends a Firefox plug-in named Firebug. This is an excellent tool only available for Firefox but Chrome, IE7 and IE8 have similar tools.
Server operating system issues, except for certain hardware requirements issues, are generally not in scope for this article, but certain topics, especially relating to the Windows operating system, are. Much of what is written about Apache, Java and Tomcat is written from a *nix perspective (Unix & Linux). As versions of the Windows Server commercial operation system became more prevalant, developers and implementers developed the tools to manage these systems under a Windows environment.
- General Reference
Many tech articles on the web now leave OS specific items, such as examples of command executions, screenshots, and filesystem paths, as out of scope issues. A file specification may be expressed in one form followed by a screenshot from a different OS.
- *nix (Unix and Linux)
Unix and Linux systems vary between themselves and amoungst their various implementations. Of the old style Unix systems, BSD and SYS5 were major differentiators, they were implemented in various ways with IBM's AIX, Hewlitt Packard's HP-UX, and Sun Microsystems Solaris. Linux has differentiated as well with major distributions based on Debian (Ubuntu, Mint) and Fedora (RedHat, CentOS).
- File System Full
On Linux-based systems, you can check the filesystem size and its usage by using the command:
$ df -k
- Swap Space
If there is no swap space defined for a system, or if there's not enough, then the system will often seem to using all its memory even if the CPU % usage is low. This is because it's unable to idle processes by using swap space (essentially writing their state to disk, for quick retrieval when another process needs it). Swap space gets defined as a fraction of available RAM; some people prefer 50% of RAM for large systems, others 200% of RAM. Remember that this is disk space and not additional RAM.
You can use this command on Linux to check the swap space:
- File System Full
The most important issue on the various Windows operating systems is managing the various components of a JapserReports Server as a Windows Service. While the solutions to these issues are as robust nowdays as their *nix progenitors, the issues that users confront have a distinctly different form and process.
While Tomcat can also handle standard web server functions, the Apache Web Server can be used as a static web page server (*.css, *.js, etc) allowing backend Tomcat servers to handle the more complex dynamic applications. Apache can also be configured as the load balancer in a clustered environment.
Java Virtual Machine (JVM)
- JVM Options
Memory use by the Java Virtual Machine is one of the more critical configuration items affecting JasperReports Server performance. The JVM Heap sizing and its relationship to physical memory. This is discussed in the wiki page, Hardware Requirements for JasperReports Server.
- Catalina.bat JVM JAVA OPTS not active
- Configuring JVM parameters on Windows with JasperReports Server
- Changing Java options on Windows bundled version of JasperReports Server
- report column header text field missing aix
- How do I list the fonts that are available to my JVM?
- ibm jvm garbage collection tuning
- sun openjdk jvm garbage collection tuning
- Java Tools
- JasperReports Server
- Ad Hoc Designer
- Memory Management with JasperReports and JasperReports Server
- Report Virtualizers
JasperReports uses report virtualizers to address many memory consumption issues associated with large reports. These virtualizers leverage memory compression or file based virtualization to reduce the memory consumed by large reports.
- Configuration Issues that can effect performance
- Jaspersoft OLAP Performance Tuning
- Tomcat Applications Server
- setting a cache filter tomcat jboss static files
- connecting apache web server tomcat writing re-direct rules
- enabling cache filter tomcat 7
- f5 load balancer tomcat 302 error
- tomcat, jasperreports server up, run a report (java.lang.outofmemoryerror: permgen space)
- set a cache filter tomcat jboss
- increase maximum thread count tomcat level
- disable automatic deployment production servers tomcat
- changing java options windows bundled version jasperreports server
- connect jconsole tomcat running a service
- JNDI Services on Apache Tomcat ( additional info in Wiki Article: How to Add a New JNDI Connection in Tomcat )
Hibernate facilitates the storage and retrieval of Java domain objects via Object/Relational Mapping. Today, it is a collection of related projects enabling developers to utilize POJO-style domain models in their applications in ways extending well beyond Object/Relational Mapping.
- DB Driver
Repository RDB Server
Take into consideration that reporting relies heavily on multiple joins and complex grouping queries, and queries that analyze and summarize huge numbers of rows of data from multiple joined tables. This may led to different tuning techniques than the ones used for standard OLTP systems.
Other Performance Resources
- JasperReports Server Performance Tips and Tricks
- Performance Tips and Tricks Search
Keywords: no-known-problems performance tips-n-tricks jasperreports-server how-to
- Performance Troubleshooting Tools
- Auditing can be useful to find where reports are spending most time, please review: