The article discusses the reasons for different types of OutOfMemoryError, focusing on "GC overhead limit exceeded." It explains how to reproduce and identify the error, considering root causes like memory leaks, overridden finalizers, and slow threads.
Chaos Engineering – Storage Saturation
Production environments frequently face space shortages due to growing disk usage by files like logs, databases, and output files. Failing to monitor and manage these files can lead to application crashes. The article explores simulating disk storage issues, offering a sample program, and strategies for diagnosing storage saturation, including manual and automated approaches using monitoring tools.
Chaos Engineering – Network Lag
The article discusses the impact of network delays on application performance and presents a method to simulate network lag using BuggyApp as a proxy server. It provides a sample program to introduce delays in server responses and explains manual and automated approaches to diagnose network issues. The article highlights the importance of addressing network performance problems in chaos engineering.
How Bigger Heaps Might Slow Down An Application
Discover how object pointers can enhance performance in Java programs. Learn about the JVM's object representation in memory and its impact on application performance.
Java NIO – OutOfMemoryError
Java NIO (New Input/Output) is high-performance networking and file handling API that facilitates you to do non-blocking IO. Non-blocking I/O provides following advantages: Concurrency: NIO enables handling multiple connections simultaneously without blocking threads, leading to better concurrency. Asynchronous Programming: Asynchronous programming allows the application to perform other tasks while waiting for I/O operations to complete,... Continue Reading →
Optimizing the Capacity of a HashMap
Many of us know that allocating more memory than we need may negatively affect the performance of our application. Thus, creating the Lists using a constructor that takes a capacity may make a significant difference. However, this optimization step might not be so straightforward while using Maps. In this article, we’ll learn how to identify... Continue Reading →
Actions on OutOfMemoryErrors
Everyone has at least once seen a failing application due to OutOfMemoryError. This error happens because the application cannot allocate the required memory. The specific reason for this problem may differ depending on the severity and heap section affected. However, in any case, we would like to have some actions prepared for this. In this... Continue Reading →
Chaos Engineering – DB Connection Leak
All modern applications connect with storage, such as a database or cache. Database connection leak is commonly observed in modern applications, which can result in connection leaks that can lead to production outages. In our series of chaos engineering articles, we have been learning how to simulate various performance problems. In this post, let's discuss... Continue Reading →
Chaos Engineering – File Connection Leak
Many Java applications still use files for importing and exporting data. If the connections to these files are not properly managed, it can lead to a significant number of connections leaking, causing the application to slow down or even crash. In our series of chaos engineering articles, we have been learning how to simulate various... 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 →