What is performance Tuning and Why Do I need it?
1. Why do I need to do any Performance Tuning? Performance tuning is the act of adjusting your environment for optimal performance. This means different things to different people / interested parties. To your end-users, a well tuned environment means a better experience to them – a more responsive system with lower response times as well as shielding from any loss of resources or resource contention. To the administers of your applications, a well tuned environment means less ‘critical’ firefighting – i.e. less downtime and high stress times of restoring application availability. To the people responsible for your environments (physically and financially) – it means a better use of resources, resulting in less resource consumption which is ultimately easier and cheaper to manage and scale. With that being said, remember that tuning performance can be an expensive procedure (time commitment and testing). Premature optimizations can be pointless and expensive. The ultimate measure of whether an application is performing well is if it continually meets the needs of the business. Please read this whitepaper in the context of your domain and what is important to you as opposed to applying all of the ideas here. The rest of this paper will walk you through a large set of tuning that you can do to your JBoss application server as well as the JVM it runs in. Where applicable, this paper will do its best to put these tunings into context where it might matter more / less. As a friendly reminder, JBoss recommends the production profile be used for enterprise production. 1.1 General First Recommendations Performance tuning is different for every environment. A few recommendations to start you with: 1) Make sure your environment is up to date. This means not just your JBoss EAP instances but also your JVM as well as your operating system and hardware (firmware). Apply patches as they are released for general consumption and marked stable. 2) If you find that after tuning your application is still not meeting the performance needs you are looking for, consider running your application with a profiler. JProfile is an excellent tool that can be used for 30 days free of charge.