Know thy enemy! This saying from an old proverb was made famous by Sun Tzu, one of the greatest Chinese military generals. If we take this and apply it to the technology your business relies upon, you need to be aware that problems will rise up from time to time that can cripple your business. You should embrace this very telling concept to avoid disaster.
Most enterprises will experience a critical issue that is very hard to understand and remedy. The usual approach is to gather a team of experts to determine the cause and fix it. It will include your own IT pros, any experts from the vendors involved, and some additional outside consultants. They will congregate in room as they try to assess the problem and suggest ideas to fix it. This is your worst-case scenario because at this point something is broken and bleeding money for the company. It may take days or longer to come up with a solution, and many times the solution is only a temporary one, which means the problem will come back and the losses will continue again.
Elusive problems like this are known as a “Ghost In The Machine”, a GITM problem can be caused by many things and the larger the enterprise application, moving parts, and interconnected items, the harder it is to find and fix. Careers and companies have been lost to this unfortunate phenomenon such as the Stock Market Flash Crash and the many times airline systems have gone down causing thousands of cancelled flights and lost revenue.
Let’s look specifically at a Java application. Java is the most popular and widely used language in enterprise applications. The labor pool of Java programmers is large and Java is a lot easier to learn and program with because there are vast libraries of pre-built code available for developing applications. Another benefit is that Java is an open source language that is generally free of licensing costs. It’s just economics since programming with Java is easier and labor is cheaper than other programming languages such as C+ and C++.
Java when programmed correctly is just as good as anything else, but the level of deep knowledge of the inner working of the Java Virtual Machine, or JVM is not understood or taught to most programmers. The JVM is the traffic cop that handles the input/output of data into the application and is the very foundation of an application stack. If the foundation is weak or falters, the whole building (stack) comes crashing down.
The JVM has to do some housekeeping to keep things running smoothly. This is known as “Garbage Collection” As the JVM is filled with data objects, they need to be processed and discarded to make room for the next set of objects for processing. Unfortunately, just like a garbage can, once it fills up, it has to be emptied before anything else can be added (processed). So, if the JVM is full while waiting for the Garbage Collection to occur, the application will pause or stop for short amounts of time. This is Latency that occurs when you are waiting for a web page to load for example.
The main point to this is that if your application pauses, then it is not working. And if it is not working for a long time, then another event happens which is called a “Stop The World" pause. A Stop the World pause means that the application just stops and can lead to a complete system crash. Either way if your application stops, so does all productivity. The business impact should be obvious, and includes unhappy users who may move to a competitor and create bad press and poor ratings for your company.
The primary causes are poor configurations, bad program code, and simple mistakes like an improperly installed patch. When running an analysis of the JVM the output is about 80 pages of data that has to be reviewed and only an experienced Java expert will be able to recognize the anomalies for further investigation. This is the expertise that a company like J-Class Solutions offers to not only help when disaster strikes, but partners with your IT team to prevent these problems. We create and support
high performance JVM technology and can assist you in making sure that your configuration is correct and optimal.