What Can You Tune?
Although some performance monitoring and tuning organizations will try to convince you that the impact of your enterprise solution lays in either the application code or in the application server itself, the truth is that it lies in both. A perfectly written application will perform poorly in a poorly configured application server, whereas a perfectly tuned application server can do only so much to cover up for a poorly written application. Thus, you need to start with a solid architecture and build an optimal application and then dedicate the time to properly tuning the application server.
Application tuning can be one of the most difficult aspects of this problem. You must perform the proper analysis of your business logic and then develop a solution that optimally solves your business requirements. Because of the uniqueness of business domains, there is no cookie-cutter solution to all business domains. There is a set of good design patterns that you can pick and choose from, however, when architecting the application that will help your cause.
This series of articles will discuss the design patterns that best serve an enterprise environment and will pay particular attention to their performance impact.
In recent times, your choice of application servers has diminished as a result of acquisitions and economic fallout. Still, the application server you choose will be driven by many factors, including the following:
- Hardware deployment
- Application server vendor market presence
- Political decisions
This series of articles will pay attention to many application servers, but focus on four specific application servers, based off of market presence as well as cost:
- BEA WebLogic 7
- IBM WebSphere 5
- Oracle Application Server
This series of articles will compare and contrast the architectures of each application server and then discuss how to tune each one. The goal is not to come to a conclusion about which application server is best, but rather to demonstrate how to properly tune each one.
When you have your application developed and your application server selected, there are configuration options in both the operating system as well as the Java Virtual Machine that can yield performance benefits. This series of articles will compare and contrast some of the more popular Java Virtual Machines, discuss how to tune those virtual machines, and show you the operating system specific configuration parameters that will yield the best performance impact.
Although it is beyond the scope of J2EE Tuning, you never want to neglect tuning any back-end resources on which your application depends; for example, your application might (and probably does) depend on a database. All the aforementioned facets of your enterprise environment can be performing optimally but if your application is forced to wait on a non-responsive database, your performance will be greatly impacted.