During the GC3 v5.0 release, there was strong continued development - for additional features, as well as performance optimization. As a result, multiple installers were released between GA (General Availability - the initial release) and now. The downside to this tactic is that some of the early GC3 v5.0 installations are not optimized for the best performance.
In this post, I'll cover how to update your GC3 v5.0 on Linux installation for improved performance and scalability.
IMPORTANT NOTE: The use-cases of GC3 are so widely varied that no one configuration will work for all GC3 instances. It is crucial that you make any applicable changes only to your test/pre-production environments and only promote them to production after they have proven beneficial and stable in your environment. Also, ALWAYS MAKE A BACKUP prior to making any configuration changes or applying any patches. Trust me
First, check the version of JRockit (the Java JVM used on Linux) that you have installed with GC3 using the following commands:
It should spit out a line containing either "1.4.2_04" or "1.4.2_05". "1.4.2_05" is a newer version of JRockit that introduced several performance and, more importantly, stability fixes. If it says "1.4.2_05", then you're installation used one of the later installers an you may already be optimized - you can reference the steps below to to verify your configuration. If it says "1.4.2_04", then you'll need to contact Oracle support and ask for the patch for the 1.4.2_05 JDK on Linux. This is distributed in quick-patch form, so installation is dead easy.
Once you have the patch, copy it to /tmp, shutdown GC3 and then do the following. I've used the name gc3v50-jdk1.4.2_05-linux.zip for the quickpatch name - this should be correct unless Oracle has recently changed it. Note: You'll need to run the following steps on all of you web and app servers to ensure that they are all running the same JDK version.
Once that is complete, startup GC3 and run through your normal screens, just to ensure that it works. I wouldn't expect any problems here, though it is always good to test - just in case. Once you're done, we can how update the configuration files to better optimize the Java processes.
On your GC3 Web server(s), edit the <gc3_home_dir>/tomcat/bin/tomcat.conf file and find the following line:
Then add the following lines after it:
If you see either of the following lines, you can remove them:
Note: the lines in this section must run in numerical order (i.e. wrapper.java.additional.1=..., wrapper.java.additional.2=..., etc) - so you'll have to renumber the remaining lines in the section after inserting these two.
On your GC3 App server(s), edit the <gc3_home_dir>/weblogic/config/gc3domain/weblogic.conf file and find the following line:
Then add the following lines after it:
If you see either of the following lines, you can remove them:
Note: the lines in this section must run in numerical order (i.e. wrapper.java.additional.1=..., wrapper.java.additional.2=..., etc) - so you'll have to renumber the remaining lines in the section after inserting these two.
Another crucial aspect of performance is the amount of memory to allocate to the JVM. This is a fairly involved topic, so I'll write more about it later. One quick note, though - one of the reasons that JRockit is so fast is that it uses a lot of memory outside of the allocated heap size for optimization. As such, if you allocate a 1.5GB heap for JRockit, it can use as much as 2.5GB of memory. Keep this in mind when setting your initial memory sizes.
In fact, many of these same pricipals and configurations apply to GC3 v4.5 on Linux. If you're interested, let me know and i'll post instructions on how to make the same changes to GC3 v4.5.
In later parts of this series, I'll cover additional topics on optimizing your GC3 instance's performance - including JVM memory allocation, operating system tuning, GC3 thread tuning, etc. Stay tuned!
In this post, I'll cover how to update your GC3 v5.0 on Linux installation for improved performance and scalability.
IMPORTANT NOTE: The use-cases of GC3 are so widely varied that no one configuration will work for all GC3 instances. It is crucial that you make any applicable changes only to your test/pre-production environments and only promote them to production after they have proven beneficial and stable in your environment. Also, ALWAYS MAKE A BACKUP prior to making any configuration changes or applying any patches. Trust me

First, check the version of JRockit (the Java JVM used on Linux) that you have installed with GC3 using the following commands:
Code:
cd <gc3_install_dir>/jdk/bin/ ./java -version
Once you have the patch, copy it to /tmp, shutdown GC3 and then do the following. I've used the name gc3v50-jdk1.4.2_05-linux.zip for the quickpatch name - this should be correct unless Oracle has recently changed it. Note: You'll need to run the following steps on all of you web and app servers to ensure that they are all running the same JDK version.
Code:
cd <gc3_home_dir> mv jdk jdk.old #Make a backup of the existing JDK directory cd /tmp unzip gc3v50-jdk1.4.2_05-linux.zip cd gc3v50-jdk1.4.2_05-linux/ cp -r * <gc3_home_dir> #This will copy the patch into your GC3 directory cd <gc3_home_dir>/jdk/bin/ ./java -version #Ensure the version says "1.4.2_05" - if so, it is installed correctly.
On your GC3 Web server(s), edit the <gc3_home_dir>/tomcat/bin/tomcat.conf file and find the following line:
Code:
wrapper.java.additional.3=-Xmx1025m #Your memory value may differ from this one, the -Xmx is the important part.
Code:
wrapper.java.additional.4=-Xgcprio:throughput wrapper.java.additional.5=-Xverbose:memory
Code:
wrapper.java.additional.4=-Xgcpolicy:optavgpause wrapper.java.additional.4=-Xgcpolicy:parallel
On your GC3 App server(s), edit the <gc3_home_dir>/weblogic/config/gc3domain/weblogic.conf file and find the following line:
Code:
wrapper.java.additional.3=-Xmx1025m #Your memory value may differ from this one, the -Xmx is the important part.
Code:
wrapper.java.additional.4=-Xgcprio:throughput wrapper.java.additional.5=-Xverbose:memory
Code:
wrapper.java.additional.4=-Xgcpolicy:optavgpause wrapper.java.additional.4=-Xgcpolicy:parallel
Another crucial aspect of performance is the amount of memory to allocate to the JVM. This is a fairly involved topic, so I'll write more about it later. One quick note, though - one of the reasons that JRockit is so fast is that it uses a lot of memory outside of the allocated heap size for optimization. As such, if you allocate a 1.5GB heap for JRockit, it can use as much as 2.5GB of memory. Keep this in mind when setting your initial memory sizes.
In fact, many of these same pricipals and configurations apply to GC3 v4.5 on Linux. If you're interested, let me know and i'll post instructions on how to make the same changes to GC3 v4.5.
In later parts of this series, I'll cover additional topics on optimizing your GC3 instance's performance - including JVM memory allocation, operating system tuning, GC3 thread tuning, etc. Stay tuned!
Comment