Well purpose of writing this page on JVM & JVM monitoring / Tuning for Oracle Apps 11i isthat for Quite some time we were getting errorslike
java.lang.OutOfMemoryError
or
java.lang.NoClassDefFoundError
error messageacross
applications
. So I thought of troubleshooting JVM and Middle Tier inOracle
Applications
11i and got enough material which I have summarized here for other aswell. This page is based on
Oracle
Application 11i with Autoconfig and Java 1.4.2 version.Though Java/JDK 1.5 is also available & certified with 11.5.10.2 . Lets start withunderstanding JVM (Java Virtual Machine) and related components.
What is JVM ?
JVM acronym for Java Virtual Machine which executes instructions generated by Javacompiler. So user click on any Self Service Request or any program which uses Java, thenApache forwards this request to mod_jserv (mod_oc4j in 10g AS) & mod_jserv caters thisrequest with help of JVM.
How & Where check JVM related configuration in Oracle Apps 11i ?
So lets start with CONTEXT file under $APPL_TOP/admin (xml file) which is of pattern$SID_$HOSTNAME.xmlThere are two important lines in CONTEXT file which will help you in understanding JVM
jvm_options oa_var="s_jvm_options" osd="Solaris" -verbose:gc -Xmx512M-Xms128M -XX:MaxPermSize=128M -XX:NewRatio=2 -XX:+PrintGCTimeStamps-XX:+UseTLAB /jvm_options-Verbose:gc means JVM is configured to print output when gc(Garbage Collector)runs.Xmx is maximum memory allocated to JVM in above example its 512 MB.Xms is JVM will start with this much memory i.e. 128 MB.
Now Check another line in 11i Context file like
oacore_nprocs oa_var="s_oacore_nprocs"2/oacore_nprocsWhich means that there are two JVM's for OACore Group. Usually default its 1 JVMin my Instance I changed it to 2, to cater huge Self Service users in my case.
how to increase number of JVM's, Types of group , Monitoring & Tuning Apps 11i JVM
Q: How to increase No. Of JVM's
Since you know place where number of JVM's are stored in Apps 11i in Context File , so youcan change them as per your requirement. There are basically following Groups with theirown JVM's.
OACoreGroup, where most of
request goes
DiscoGroup, which serve your Discoverer related requests
FormsGroup, for Forms (If they are running in Servlet Mode, confirm it again)
XmlSvcsGroup, for
ServicesIn Context File
disco_nprocs oa_var="s_disco_nprocs" osd="Solaris" 1 /disco_nprocs
Sets 1 JVMProcess for Discoverer.
oacore_nprocs oa_var="s_oacore_nprocs" 1 /oacore_nprocs
Sets 1 JVM for forOACoreGroup