Prabhakar Jonnalagadda is the performance architect in Oracle. He was presented with a performance problem of an application which had following symptoms: + Frequent unavailability of the application (crash issues) + Significant degraded performance in repeated spells In this post he talks about how he solved this application's performance problems. He basically analyzes the GC... Continue Reading →
Troubleshooting App unresponsiveness due to Oracle DB
Recently we encountered a production in an application. This application was connecting to multiple systems of records (SOR). Oracle RAC cluster is one of the primary systems of record. This Oracle RAC cluster was slowing down due to resource constraints. This slowdown in the Oracle RAC cluster degraded the entire application's response time. In this... Continue Reading →
Troubleshooting deadlock in an Apache opensource library
Apache PDFBox is a popular open-source library that facilitates java applications to work with PDF documents. Recently we encountered a Deadlock that surfaced in this library. In this post we have shared how we troubleshooted and identified the root cause of the problem. What is Deadlock? First let's try to understand what 'Deadlock' means. Several... Continue Reading →
Troubleshooting Microservice’s OutOfMemoryError: Metaspace
Recently we confronted an interesting 'java.lang.OutOfMemoryError: Metaspace' problem in a Microservice application. This Microservice application will run smoothly for initial few hours, later it will start to throw java.lang.OutOfMemoryError: Metaspace. In this post let me share the steps we pursued to troubleshoot this problem. Different types of OutOfMemoryError JVM memory has following regions: a. Young... Continue Reading →
Troubleshooting HTTP 502 bad gateway in AWS EBS
The application that we are going to discuss in this post was running on Elastic Beanstalk (EBS) service in Amazon Web Services (AWS). Intermittently this application was throwing HTTP 502 Bad Gateway error. In this post, let’s discuss how we troubleshooted and resolved this HTTP 502 bad gateway error in Elastic Beanstalk service. Video: To... Continue Reading →
Memory leak due to improper exception handling
In this post let's discuss an interesting memory problem we confronted in the production environment and how we went about solving it. This application would take traffic for a few hours after that it would become unresponsive. It wasn't clear what was causing the unresponsiveness in the application. Memory leak issues due to improper exception... Continue Reading →
Garbage Collection tuning success story – reducing young gen size
When you tune Garbage collection performance, you are not only improving Garbage collection pause time but also the overall application's response time and reducing cloud computing cost. Recently we helped to tune the Garbage collection behavior of a popular application. Just by making a minor change, it resulted in a dramatic improvement. Let's discuss this... Continue Reading →
Spring Boot pet clinic app – performance study
Spring pet clinic application is a sample application developed by the Spring Framework developers to demonstrate the capabilities of Spring Boot, Spring MVC and Spring Data Framework. We set out to conduct a performance test on this application and see whether we can identify any performance bottlenecks. Environment Setup We cloned the Spring pet clinic... Continue Reading →
AWS Cloud watch + yCrash = Monitoring + RCA
We had an outage in our online application GCeasy on Monday morning (PST) Oct' 11, 2021. When customers uploaded their Garbage Collection logs for analysis, the application was returning HTTP 504 error. HTTP 504 status code indicates that transactions are timing out. In this post, we would like to document our journey to identify the... Continue Reading →
Memory Leak in Java executor
I was surprised to witness the Java Executor behavior - which caused "java.lang.OutOfMemoryError: unable to create new native thread" in our application. I would like to share my surprise (i.e. problem) and resolution to it. In order to explain the problem better, I created the following example: import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; public class ThreadLeaker... Continue Reading →