JasperReports Server Performance Reference

Introduction

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.

Using Firebug for troubleshooting Browser issues

Server Instance

Operating System

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:

      $ free
  • Windows
    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.

Web Server

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)

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

Feedback
randomness