Oracle® Fusion Middleware Publishing Reports to the Web with Oracle Reports Services 11g Release 1 (11.1.1) Part Number B32121-02 |
|
|
View PDF |
This section provides tips for improving the performance and stability of Reports Server, which is responsible for:
Accepting the report request from various clients.
Scheduling the jobs to run.
Managing Oracle Reports engines
Managing the cache
Managing various destinations
Security check
Managing the jobstore (persistent job data)
While operating under heavy load, it is essential to tune various Reports Server parameters to optimal values, as follows:
Determine optimal values for the initEngine
, maxEngine
, and minEngine
attributes of the engine
element in the server configuration file:
<engine id="rwEng" class="oracle.reports.engine.EngineImpl" initEngine="1" maxEngine="2" minEngine="1" engLife="50" maxIdle="30" callbackTimeOut="90000">
For more information on the engine
element, refer to Section 8.2.1.9, "engine". The maxEngine
value sets the maximum number of processes ready to respond to user requests for running reports. Setting it too low means user requests get queued up and available machine capacity is not fully utilized. Setting it too high means Reports Server will take more than its share of machine capacity from other activities the host also needs to perform, and could cause the operating system to crash.
As an example of a simple calculation for number of engines, suppose you have set of reports that takes an average of 10 seconds to run. Input requests to your system varies from 6 reports per minute to 12 reports per minute. In this scenario, the calculations are as follows:
initEngine
= ( average time to run report) * (minimum report requests input rate) = (10/60) * 6 = 1
maxEngine
= (average time to run report) * (maximum report requests input rate) = (10/60) * 12 = 2
minEngine
= Depending on the kind of load, anything between 0 to initEngine
With these calculations, minEngine=1
and maxEngine=2
can be specified in the server configuration file. This ensures that whenever a job arrives, it gets an idle engine immediately.
In scalability and performance tests, maximum throughput is seen when maxEngine
is configured using the guideline of 2-4 engines multiplied by the number of CPUs. You can set up a maximum value of maxEngine=8 if the machine has a dual processor or maxEngine=16 if the machine has a quad processor.
If you are not using the URL engine, comment the engine
element with ID="rwURLEng"
in the server configuration file.
Determine optimal values for the cache
element's cacheSize
property, the queue
element's maxQueueSize
attribute, and the EXPIRATION
keyword.
For more information, refer to Section 8.2.1.3, "cache", Section 8.2.1.21, "queue", and Section A.6.6, "EXPIRATION". The values of cacheSize
, maxQueueSize
, and EXPIRATION
are related to each other and they must be set carefully for efficient Reports Server operation.
For example, when you run reports with EXPIRATION=480
, this implies that you want to keep the jobs in cache for 4 hours (480 minutes). Given that, maxQueueSize
should be set to accommodate all the jobs for 4 hours. Thus, at a rate of 10 jobs per minute:
maxQueueSize
= (report requests input rate) * (expiration period) = 480 * 10 =4800.
The value of cacheSize
also should be set sufficiently high to accommodate 4800 jobs. Suppose the average size of each report is 100K:
cacheSize
= (maxQueueSize
) * (average size of report) = 4800*100/1000 = 480MB
You can use similar logic to calculate the value of the cache
element's maxCacheFileNumber
property.
Note:
The minimum recommended value formaxQueueSize
is 1000 (the default). A significantly lower value than the default values for maxQueueSize
or cacheSize
may degrade Reports Server performance.Set the engineResponseTimeOut
attribute of the engine
element in the server configuration file:
<engine id="rwEng" class="oracle.reports.engine.EngineImpl" initEngine="1" maxEngine="2" minEngine="1" engLife="50" maxIdle="30" callbackTimeOut="90000" engineResponseTimeOut="5">
For more information on the engine
element, refer to Section 8.2.1.9, "engine".
Set engineResponseTimeOut
if you are experiencing intermittent engine hangs. This attribute enables Reports Server to detect the hanging engine and perform cleanup. The sooner Reports Server detects the hang, the better the stability of the system. Thus, engineResponseTimeOut
must be set carefully, as follows:
The value of engineResponseTimeOut
should be set to the maximum time a report takes in the set of reports you have. For example, if you have set of reports that takes 10 seconds to 5 minutes to run, you can set engineResponseTimeOut="5"
(5 minutes).
Note:
It is always better to run batch reports on a separate server with differentengineResponseTimeOut
values. Do not submit interactive and batch reports to same server.Set the maxConnect
attribute of the connection
element in the server configuration file;
<connection maxConnect="180" idleTimeOut="15">
For more information on the connection
element, refer to Section 8.2.1.5, "connection".
The maxConnect
attribute controls how many total requests Reports Server can simultaneously handle at any moment in time. The key purpose of maxConnect
is to keep Reports Server from being overcome by some runaway program or process or by a denial of service attack. It should be always set to a value that is greater than the maximum simultaneous clients.
For example, if your system is expected to handle 150 simultaneous clients, you can set maxConnect
to any value above 150. You can use a safety factor of 10% to 20%, as follows:
maxConnect
= 150 + 150 * 0.2 = 180
Set the HTTP timeout value (applicable to AS only).
The HTTP timeout value should be set based on the time required to run the longest report in the system. If longest-running report takes 20 minutes to run, HTTP timeout should be more than 20 minutes. Otherwise, an HTTP timeout error will display when the report is still running in the server. This parameter can be set in the ORACLE_INSTANCE/config/OHS/ohs1/httpd.conf
file.
Alternatively, you can set the timeout value in Oracle Enterprise Manager.