JVM Tuning in JBoss

HotSpot JIT JVM: -server

Memory Allocation: -Xms, -Xmx, -Xss

GC Avoidance

   Monitoring: -verbose:gc

  Frequency

  Minor vs. Full GC



To enrich your career and become a JBoss professional, visit Tekslate, the global online training platform:" JBoss Training". This course will help you achieve excellence in this field.

GC should run as infrequently and as quickly as possible

Example: -XX:NewSize=80m -XX:MaxNewSize=80m -Xms400m -Xmx400m -XX:+UseParallelGC -XX:ParallelGCThreads=2

         Use 64bit Hardware/OS/JVM to be able to allocate over 4GB

         Do not use extra-large or extra small heaps

         Use the multi-processor/core machine to take advantage of parallel GC

         Use Sun’s Java 5 JVM (self-tuning) over 1.4 (or older)

         Tuning GC on Java

Tomcat Tuning in JBoss

Tune connectors in server.xml maxThreads + 25% = max minSpareThreads + 5% = normal maxSpareThreads + 5% = peak Remove unnecessary Valves, Loggers, and Connectors Precompile JSPs Turn off "development" mode on jsp handler (servlet) in conf/web.xml Session timeout JSPs can be precompiled (by developers or assemblers) using Ant’s jspc task.

RMI Tuning in JBoss

  By default JBoss creates a new thread for each RMI request Wasteful and unscalable during spikes Switch to pooled invoker In conf/standardjboss.xml replace all occurrences of :jboss:service=invoker,type=jrmp by jboss:service=invoker,type=pooled

Log4J Tuning - JBoss

System-wide logging set on DEBUG or TRACE can bring JBoss to a standstill Configured in conf/log4j.xml By default, JBoss uses INFO priority and logs to both CONSOLE and FILE

Consider changing the <root> priority to ERROR

Consider logging to FILE only

Consider using category filters for your own class hierarchies

<category name="my.package">

<priority value="INFO"/>



<priority value="ERROR" />

<appender-ref ref="FILE"/>


Tuning Other Services

Increase the scan frequency of the deployment scanner (default: 5 secs) Consider setting MinimumSize on [stateless] Session Bean Container pool (conf/standardjboss.xml) Use Hibernate in place of CMP (2.x) Avoid XA connection pools Use JDBC drivers to check on connections

Slimming JBoss

         Remove services that are not needed          Not a huge impact on performance          Frees up memory and other resource (like threads)          Faster JBoss startup          Excellent security practice          Breaks Java EE TCK          Create a new configuration set (copy of default) Services that can be trimmed include the following:          Mail Service (and libraries)          Cache Invalidation Service          J2EE client deployer service          HAR deployer and Hibernate session management services          Hypersonic (provide a different DefaultDS for JMS MQ)          JMS MQ          HTTP Invoker (RMI over HTTP)          Support for XA Data Sources          JMX Console          JMX Invoker Adaptor (JMX calls over RMI)          Web Console          JSR-177 for JMX          Console/Email Monitor Alerts          Properties Service          Scheduler Service/Manager          UUID key generation          EAR Deployer          JMS Queue Destination Manager          CORBA/IIOP Service          Client User Transaction Service          Attribute Persistence Service          RMI Classloader          Remote JNDI Naming          JNDI View          Pooled Invoker          Bean Shell Deployer

For an in-depth understanding on JBoss click on: