It is not uncommon for WebLogic applications to show performance issues from time-to-time. This is a natural evolution for many applications especially when you are in a growth period of the application; by adding new users to the system or adding new features and functionality. The developer who wrote the code is not always able to predict how the application will be used or handle the load. Then net result is a performance issue. Some of the commonly seen are slow response times and application crashes resulting in an Out Of Memory error.
The truth of the matter is that most of your performance issues are solvable. There is a technical reason why the systems function the way they do. The biggest challenge is to get a process in place to tackle the issues -- one by one -- until at some point, you stop getting the late-night calls, and the systems start to become more stable. The second step is to change your process so that it includes the best practices in your development life cycle, which will help avoid these problems in the future. The more stability you bring into the environment, the more time you will have to focus on solving the IT challenges that will give the company the biggest return on investment.
Identifying and solving the issues requires a technical commitment to the projects and issues at hand. The solutions to the problem are available at your fingertips; the challenge is to get people in the right mindset to find them. Doing this requires that technical issues be resolved so there is some breathing room to focus on operational excellence.
How do I go about solving these issues?
In order to solve these issues, there must be technical initiatives focused on addressing the performance issues and help reduce the amount of downtime in the environments. Start your efforts with the fundamentals. The following areas are where you should consider spending your initial effort. Consider creating small groups to work independently on the following areas.
JAVA: The foundation of the application server. One of the best places to get data about a poorly performing application is to get data from the application itself. Get thread dumps from your applications and profile the memory.
Networking: It is hard to image a modern application that does not use a network. When you are looking for causes to your issues do not forget the network. Putting a NIC card in promiscuous mode or TCP dumps may help identify network related issues. It is also a good idea to look at all layers in the network to include Load Balancers, Network Interface Cards (NICS) on the boxes, firewalls and anything that's responsible for routing traffic to your applications.
N-Tier: If your application is an n-tier application you may be dependent on other systems. Having a good understanding of how all applications work together will help you look at your big picture. Having a pictorial view of your systems can help give others a better understanding of how things work and can aide in trouble-shooting issues.
Operating Systems: Your application runs on an operating system. Your performance issues could be related to improperly configured systems. Check your operating system for signs. Look for full disks, CPU context switching, memory use and system logs.
Database: If your application uses a database make sure you are monitoring the database and its processes. Look for long running queries and log files for potential issues.
In many cases you will find the root of your performance issue in one of the fundamental areas. Understanding fundamentals is a key element to successfully identifying issues with your applications. The great thing about understanding the fundamentals for an n-tier applications is that they are technology agnostic -- if you understand the fundamental problem, it doesn't matter in what programming language the application code is written. By understanding the fundamentals, you will be able to solve not only Java application server issues but also any other issue that occurs in an n-tier architecture.
Solving your performance problems is possible. For starters you need to have a systematic approach to looking into and resolving them. Keep in mind that sometimes the fanciest solutions can cause more issues. Keep your group focused on the technologies they understand. Consider growing you core competency in fundamentals.