The most common sources of performance problems are situations where large reports are being run and where many users are logged into the application simultaneously. Both cases can consume excessive server memory and processing power in certain situations, resulting in other application services slowing down while the server works harder to manage a heavier load.
Typically, one application is deployed into an Oracle Application Server(OAS) instance and each instance has a dedicated memory allocated and can be allotted to run on specific processing 'cores' of the server. Therefore, deploying multiple applications in parallel and automatically distributing logged-in/online users evenly over these applications will reduce the memory consumed by each application, while increasing the processing power available to each instance.
Similarly, large Windward reports consume a lot of memory and processing power when building report output files. Deploying an application which only launches and manages reports, in parallel to an application which only handles online-users, will prevent resource-intensive reports from affecting online users, and allow administrators to finely tune the memory allocated to report processes.
While neither of these features are mandatory to run the application, one or the other can be used, or both as needed. For example, users with large processing needs may choose to have four load sharing application instances and one report server application instance pointing to a single database.
Both features use some common logic and configuration is similar. There are a few differences with set up, and they are noted below.
A very configurable deployment options have been built to take advantage of these two features. A simple configuration file can define the location and quantity of instances used, whether they exist in the same application server, or completely different machines on the network. After a new instance is deployed, modifying the configuration file is all that is needed to redirect clients to the correct application server.
<application-desc main-class="com.highlinecorp.professional.EPersonality"> <argument>PORT=12411</argument> <argument>SERVER_IP=http://phobos.highlinecorp.com:7779/ePersonality_AS06</argument>The simplest way to implement load sharing and a separate report engine was to alter this connection information and route the application traffic to the desired server. In other words, most of the changes to support these features were done on the client side connection logic.
#Format: reportHost=xxx|port,yyy|port epHosts=http://phobos.highlinecorp.com:7779/ePersonality_AS06@12411,http://phobos.highlinecorp.com:7779/ePersonality_AS06@12412 reportHosts=http://phobos.highlinecorp.com:7779/ePersonality_AS07@12413A system administrator can add to the list in this file as more instances become available, or restrict the list in this file, and changes are picked up in a matter of seconds. This can reduce downtime by redirecting clients to another instance whenever a new EAR is deployed, or if there is ever a problem with the server and it needs to be restarted.
The servlet can be tested by opening (the following sample) URLs in a web browser and refreshing to get new connection information saved in the configuration file:
http://phobos.highlinecorp.com:7779/selfService_AS06/loadsharingservlet?type=ep http://phobos.highlinecorp.com:7779/selfService_AS06/loadsharingservlet?type=report
An example of a stand-alone application is one application instance to one database. With the exception of stand-alone applications, all instances must define the deployment type as one of the following JVM arguments:
-Dcom.highlinecorp.deployment=application (for load sharing applications) -Dcom.highlinecorp.deployment=reportServer -Dcom.highlinecorp.deployment=standAlone
For example, if a user wishes to use three instances for load sharing, they could deploy;
An instance with multiple JVMs has the feature of reduced work when deploying or restarting an instance since the action needs to be done once by an administrator and the Oracle AS will duplicate the work for every other JVM.
However, the drawback is that JVMs cannot be restarted or redeployed individually, causing all application processes to be down (mix and match option may solve this).
Report servers must have a completely separate instance with one JVM.
Report servers should not have any startup cache loaded - configured in AppResources/selfServiceStyle.xml
This file can be placed in the same root directory as the JNLP file. To override this, you may also specify a file locations as a JVM argument using:
-Dcom.highlinecorp.connections.config=/server_path/connections.config
Also, note that when using this servlet, the SERVER_IP argument has changed to use the selfService context. The relevant JNLP file portion now looks like this:
<application-desc main-class="com.highlinecorp.professional.EPersonality"> <argument>SERVER_IP=http://phobos.highlinecorp.com:7779/selfService_AS06</argument>The JNLP file SERVER_IP argument is now used to find the connection information servlet.
It is recommended the Report Server instance be given higher memory (heap size) allocation due to the nature of Windward Report processes.
The minimal number of instances to take advantage of both features is three, two instances for load sharing and one for a separate report engine.
The correct configuration will depend on the size of the customer database and usage. It may be possible to make an educated guess on the initial number of instances in a load sharing configuration and then fine tune through experimentation.
Screen captures are meant to be indicative of the concept being presented and may not reflect the current screen design.
If you have any comments or questions please email the Wiki Editor
All content © High Line Corporation