The Spring Boot Buggy API is an open-source tool for simulating various performance issues like memory leaks and CPU spikes in applications. By testing these scenarios, developers can assess system resilience and evaluate performance monitoring tools. It allows easy invocation of specific problems to analyze system behavior and improve software robustness.
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 →
Performance impact of java.lang.System.getProperty()
The 'java.lang.System.getProperty()' API is used to retrieve system properties in Java applications. However, its synchronized nature can lead to performance issues, especially if called in critical code paths, causing threads to become BLOCKED. Solutions include upgrading to JDK 11 or caching properties to enhance performance.
Chaos Engineering – Simulating OutOfMemoryError
This article explores the simulation of the 'java.lang.OutOfMemoryError: Java Heap space' in Java applications. It presents a sample program that continuously adds records to a HashMap until the heap size is exceeded, causing the error. The post discusses both manual and automated approaches to troubleshoot this issue effectively.
Chaos Engineering – Simulating CPU spike
This article explains how to simulate 100% CPU consumption using an infinite loop in multiple threads with Java's BuggyApp application. It details the implementation of the 'CPUSpikeDemo' and 'CPUSpikerThread' classes. The author also suggests methods for diagnosing spikes, including manual thread dumps and automated analysis tools like yCrash for root cause identification.
Load Average – indicator for CPU demand only?
The 'Load Average' metric, often mistaken as solely CPU demand, also reflects I/O demand. A case study using BuggyApp demonstrated this, showing high disk I/O operations led to a Load Average of 5.0 on a single CPU system, despite low CPU utilization. Thus, Load Average encompasses both CPU and I/O activity.
Buggy App – Simulate performance problems
Buggy App is a Java application designed to simulate various performance problems like memory leaks, CPU spikes, and deadlocks. It allows users to test their application’s resilience and performance monitoring tools under stress. Users can launch Buggy App with specific arguments to replicate issues such as high memory usage or network lag effectively.
