Cognos BI application tier

The Cognos® BI application tier can contain one or more servers (for example, report servers). Such a server runs requests, for example, reports, analysis, and queries, that are forwarded by a gateway.

The SUT has two Cognos BI report servers as application tier, each in its own virtual machine. Both virtual machines also run a dispatcher service that starts and controls the report service in its instance.

The Cognos BI Gateway was configured to send any requests to the first available dispatcher service in its list of known dispatchers. When a dispatcher service starts, it registers itself with the Content Manager. As a result, each dispatcher is aware of the other dispatchers and can route requests to other present dispatchers. This enables the capability of workload balancing between the dispatchers and hence also between both report servers. The Cognos BI Gateway itself does no request routing between the Cognos BI report servers.

For more information on the Cognos BI Application tier, refer to the IBM® Knowledge Center for Cognos Business Intelligence 10.2.1:

  • Cognos Business Intelligence 10.2.1 > Install > Business Intelligence Architecture and Deployment Guide 10.2.1 > The Multitiered Architecture > Tier 2. Applications: IBM Cognos BI Servers

Also refer to the following technical article on IBM developerWorks®:

IBM Business Analytics Proven Practices: IBM Cognos BI Dispatcher Routing Explained

Report Server tuning

WAS Java™ virtual machine heap size

The WAS report server initial and maximum Java virtual machine (JVM) heap size was set to 1024 MiB and 2048 MiB respectively. Increasing the JVM heap may often improve performance.


Cognos BI transaction throughput - two compared to four gateway CPUs

WAS administration console path:

Servers → Application Servers → server1 → Java and process management → Process Definition → Java Virtual Machine

WepSphere WebContainer thread pool

The WAS Thread Pool WebContainer maximum was increased from default 50 to 500. Increasing the maximum will improve scalability for the Cognos BI report server.


WAS Thread Pool WebContainer properties

WAS administration console path:

Servers → Application Servers → Server1 → Thread Pools → WebContainer

Report Server session cache

The default processing behavior for the Cognos BI Report Server can be changed by modifying entries in the rsvpproperties file. Depending on your specific IBM Cognos BI application and requirements, changing settings in the rsvpproperties.xml file may improve the performance.

A rsvpproperties.xml.sample file is located in the <cognos10_location>/configuration directory.

If required, just copy the sample file to the file rsvpproperties.xml.

One parameter which is important for the performance, is the maximum size of the session cache maintained by the report server. It was increased from 20 to 100.

...
<property>SessionCacheSize</property 
   <value type=”long”>100</value>
...
Note: Increased caches might have unintended side effects if the system can not satisfy higher memory requirements.

Number of processes for the report service

The report service, batch report service, and report data service have several settings that you can configure to optimize the use of system resources.

There are a number of processes associated with the report service and the batch report service. When these services receive requests from the dispatcher, they start processes to handle the requests (also known as BiBus processes). You can specify the maximum number of processes that these services can start any time.

The report server execution mode was explicitly set to 64-bit for the SUT.

For more information on the report server execution mode see:

The number of processes should be configured based on the amount of available capacity provided by the Cognos report server. In general, report processing is a CPU-bound process. As a result, the number of CPUs for the server are the main variables to keep in mind when adjusting this setting from the default value of 2.

Figure 1 shows the transaction throughput and response times when scaling the number of report service processes from two to eight processes.

Figure 1. Scaling the number of report service processes

Scaling the number of report service processes

The two report servers in the SUT are defined with four virtual CPUs each. The default value of two system-wide report service processes for a single report server gives lower results in this case.

When setting the number of processes equal or higher than the number of available CPUs, the report server is much better utilized and delivers a higher transaction throughput and lower response times.

Setting the number of processes for the report service for peak and non-peak periods:


Setting the number of processors for the report service for peak and non-peak periods

Cognos Connection path:

Configuration → Dispatchers and Service → Set properties → Report Service →Tuning → Settings

Query Service - Java virtual heap size

The initial and maximum heap size for the Query Service was increased to 4096 MiB.


Increased heap size for Query Service

Cognos Connection path:

Configuration → Dispatchers and Service → Set properties → Query Service → Settings

Remarks on the Report Server memory footprint

All tuning mentioned above indicates that the memory footprint for the report server can get very big. The following memory-consuming components need to be considered together:

  • WAS JVM heap size (2 GiB)
  • Query service JVM heap size (4 GiB)
  • number of processes for the report service (can grow to more than 1 GiB memory per process)
Figure 2. Report service process memory consumption over time

Scaling the number of report service processes

Figure 2 shows the memory consumption for four report service processes over three hours at a continuous workload level.

All four processes grow to 1.2 GiB memory in parallel. From time to time, a single process becomes idle and is stopped by the report service. Due to the ongoing workload, a new process is created that again grows over time.

Conclusion: There is a recommendation of setting up two report service processes (31-bit) per available report server CPU. We used 64-bit report service processes for the SUT and there was no performance difference between one process per CPU versus two processes per CPU. But with two processes per CPU, the memory requirements for the processes may also double.

The Cognos BI report servers were enlarged to 16 GiB memory each in order to satisfy the memory requirements of already 11 GiB for Cognos services and WAS Java heaps for one instance.