Skip to main content

WebSphere Application Server Performance Tuning...

Here are some tips for WebSphere Application Server Performance Tuning:



1. Turn verbose garbage collection on, either by using WAS console (Servers => Application servers => server_name => Process definition => Java Virtual Machine) or by modifying command line parameters. Then, restart JVM. 

2. Run your test harness and peruse the log file native_stderr.log. This will give you an idea whether your JVM has got optimal heap size allocated: you'll want to find that garbage collection does not occur more often than every 10-15 seconds and it does not take longer than 1 to 2 seconds to complete. 

3. If the above is not true, change the JVM heap size, restart JVM and repeat step 2. 

4. Use WAS console to check the size of Web Container's thread pool. the maximum size of 60-80 is usually a good default value. 

5. Use WAS console to make sure the JDBC Connection Pool has its Maximum Connections set up to a value lower than Web Container's thread pool. 

6. Use WAS console to turn servlet caching on. 

7. Keep checking the performance and getting users' feedback as performance tuning is a never-ending process. 


This is very extensive and large topic.

You have multiple roads/options to follow. From my point of view:

1) Validate all the OS values following the infocenter advise.

2) Run the script applyPerfTuningTemplate.py

3) Run basic workload sample stress test

4) Capture some metrics using TPV in order to check the values in use.

5) Adjust (If needed) HeapSize. Pools and webcontainer

6) Run the workload test again and compare the metrics.

7) In case of using a DB - work with your DBA to track the DB behavior.

8) Keep updated the environment ( Apply Fixpacks).

Finally you can use multiple tool to gather information regarding the health of WAS but talking on a very initial step you can use TPV, it will be easy and much simple to measure one server instead an entire cluster. In case you think the application is not working as expected and it is causing applications leaks you can capture Javacore and find out the root the problems.


Performance tuning includes N-numbers of parameters to be updated. Some of them are mentioned below:


The only thing to determine which parameter to update is to check what kind of issue you are facing:

1) If Server is getting crashed with OOM - Heap Size issue.

2) Thread hungs - check thread pool.

3) native_stderr.log getting full - Enable verbose GC and check Heap size.

4) Server getting hung (Even if its running) - Update to latest FP.

5) If desired functionality not working (like pool maintenance thread not runnig etc ) - Update to latest FP.

6) Check TPV (Tivoli Performace Viewer) for investigating cause.

7) Check if Slow response from DB - Reap Time, Unused timeout, aged timeout, max, min number of connections.



Comments

Popular posts from this blog

SSL certificate installation on IHS (IBM HTTP Server):

Hi, folks... Today I am going to explain how to install an SSL certificate on IHS (IBM HTTP Server). Let's go through the below steps: *Notes: 1) Create a .sh script for creating the db, for importing certificates and for receiving the signed key.  2) gsk7cmd command supports -Xms1024m -Xmx2048m options for adding extra heap memory to java. This is very usefull because some times you end up with OutOfMemory errors. 3) After creating the request you can see the request by list request certificates in the keystore, after receiving the signed certificate the certificate request is removed. Don't worry, this is normal. 4) SL0208E: SSL Handshake Failed, Certificate validation error.  This error is related to the Root Class-3 certificate. Don't forget to import it to the keystore. Step 1 : Configure your environment variables (Using command line): export JAVA_HOME=/java/jre export PATH=/java/jre/bin:$PATH Step 2 : Create a new key store database: ...

Typical flow of a J2EE Application

The typical application flow is as follows: 1. A Web client requests a URL in the browser (input page). 2. The request is routed to the Web server over the Internet. 3. The Web server immediately passes the request to the Web server plug-in.  All requests go to the Web server plug-in first. 4. The Web server plug-in examines the URL, verifies the list of host name aliases from which it will accept traffic based on the virtual host information, and chooses a server to handle the request. 5. A stream is created. A stream is a connection to the Web container. It is possible to maintain a connection (stream) over a number of requests. The Web container receives the request and, based on the URL, dispatches it to the proper servlet. 6. If the servlet class is not loaded, the dynamic class loader loads the servlet (servlet init() , then doGet() or doPost() ). 7. JNDI is used for lookup of either datasources or EJBs required by the servlet. 8. Depending upon whether a ...