Due to the heat of the moment, most SRE engineers restart the application without capturing the right data to debug the problem. Without the right data, debugging the production problem can be hard. yCrash data script captures below mentioned 360-degree data that too at the right moment. These artifacts will be highly useful to troubleshoot... Continue Reading →
16 artifacts to capture when there is a production problem – J4K Conference
J4K 2022 is a conference for Java Developers on Kubernetes, held on September 28th. It is an industry leading conference that combines the best of open source and middleware communities for developing applications on Kubernetes. Our Architect Ram Lakshmanan was invited to give a talk on the topic: 16 artifacts to capture when there is... 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 →
Simulating & troubleshooting deadlock in Kotlin
All multi-threaded applications are prone to deadlock. Modern Kotlin platform is no exception to it. In this post let’s discuss how to simulate a deadlock in Kotlin and how you can troubleshoot it. What is Deadlock? First let's try to understand what 'Deadlock' means. Several technical definitions aren’t clear. ‘Deadlock’ is one among them ;-).... Continue Reading →
Java Hashtable, HashMap, ConcurrentHashMap – Performance impact
There are a good number of articles that articulate functional differences between HashMap, HashTable and ConcurrentHashMap. This post compares the performance behavior of these data structures through practical examples. If you don't have patience to read the entire post, here is bottom line: When you confront with the decision of whether to use HashMap or... Continue Reading →
Java class loading – performance impact!
java.lang.ClassLoader#loadClass() API is used by 3rd party libraries, JDBC Drivers, frameworks, application servers to load a java class into the memory. Application developers don’t use this API frequently. However when they use the APIs such as ‘java.lang.Class.forName()’ or ‘org.springframework.util.ClassUtils.forName()’, they internally call this 'java.lang.ClassLoader#loadClass()' API. Frequent usage of this API amongst different threads at runtime... Continue Reading →
“Learn yCrash” series
The industry has seen cutting-edge Application Performance Monitoring tools and infrastructure monitoring tools. These monitoring tools are great at answering the question: 'What is the problem?'' but not, Why does the problem happen? yCrash attempts to answer this question. It captures 360-degree artifacts from your technology stack such as Garbage collection logs, thread dumps, heap dumps,... 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 →
Java UUID generation – Performance impact
Java developers tend to use 'java.util.UUID#randomUUID()' API, to generate a UUID (Universally Unique Identifier) number (i.e., 'b8bbcbed-ca07-490c-8711-5118ee0af2f9'). Under certain circumstances, using this API can affect your application’s availability. Let’s discuss this API in this post with a real-world example. Performance impact on Java UUID generation https://youtu.be/8Q_injWDm9M How does 'java.util.UUID#randomUUID()' API works? java.util.UUID#randomUUID() API internally uses... 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 →