This article provides a comprehensive guide for visualizing Java Virtual Machine (JVM) metrics using Prometheus and Grafana. It explains how to set up the monitoring system, retrieve JVM metrics from applications, and create custom dashboards. The integration enhances problem detection and facilitates quicker resolution, boosting application performance and reliability.
How ‘yCrash Log’ uses AI & ML?
Application logs are crucial for engineers to troubleshoot production incidents, but manual inspection is often inefficient. The 'yCrash Log' tool utilizes AI and ML to analyze and structure unfiltered log data, identify errors, and provide solutions, improving incident response time and system reliability. It enhances traditional log management by automating root cause analysis.
JVM Optimization in Real Systems
A Spring Boot application unexpectedly surged in JVM memory usage from 8GB to 61GB without any deployment or configuration changes. By diagnosing a ZipFile$Source memory leak with yCrash, the team identified excessive caching leading to the leak. By disabling caching and restarting the app, they reduced memory usage to 4GB effectively.
Top 5 Java Performance Problems
Java is a popular programming language that powers several mission critical applications all over the world. In this post let's discuss some of the commonly confronted performance problems by Java applications and potential solutions to solve them. Video In this video, we explored the most common issues that impact Java applications in production environments. Our... Continue Reading →
Introduction to ExecutorService in Java
The article discusses the challenges of working directly with thread instances in Java and introduces the Concurrency API, specifically the ExecutorService interface, which simplifies thread management. It covers creating single-threaded and pool-threaded executors, submitting tasks, and the importance of properly shutting down the executor to prevent memory leaks.
Explaining OutOfMemoryError on Overhead Limit Exceeded
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 allows high-performance non-blocking I/O, enhancing concurrency and efficiency. However, running a Spring Boot application with Java 11 led to frequent 'OutOfMemoryError' issues. Upgrading to Java 17 and increasing Direct Buffer Memory allocation improved performance, allowing for significantly more connections before errors occurred. Solutions include optimizing memory size or upgrading Java versions.
