Welcome!

@DevOpsSummit Authors: Elizabeth White, Liz McMillan, Dalibor Siroky, Pat Romanski, Stackify Blog

Related Topics: @DevOpsSummit, Java IoT, Microservices Expo, Microsoft Cloud, Machine Learning , @CloudExpo

@DevOpsSummit: Blog Post

DevOps Role in Troubleshooting JVM Issues | @DevOpsSummit [#DevOps]

Application developers can deploy their applications with success in a staging or QA environment

The JVM issues vary from Java OutOfMemory Error to JVM Crash. Application developers might be not completely equipped to determine the root cause of the issue, hence DevOps can play a vital role in narrowing down the issue and connecting the right people/team to rectify the problem.

Application developers can deploy their applications with success in a staging or QA environment and broadcast that the application is working fine. However, the staging or QA environment is not completely identical with production at - least with respect to load. Due to huge load, the application can behave differently. In order to prevent an occurrence of these kinds of scenarios, it is a good practice to engage a DevOps team [with right JVM skills] to proactively analyze the running application. Proactive engagement of a DevOps team will be beneficial for the organization and for the development team as well.

As a proactive engagement, the DevOps team needs to conduct an analysis on the collected memory snapshot.The memory snapshot can be gathered at regular intervals time and multiple samples of the same, so that a good picture of what is happening internally is known.

By employing appropriate JVM diagnostics tools, the DevOps team can provide recommendations to application developers with respect to memory consumption, memory reserved or memory wasted in Java collections.The topmost consumer of Java Heap memory, classes loaded, object promotion rate,object liveness, object references and many more details can be shared with application developers proactively. These in-depth details will provide application developers with insight into the application behavior and help identify any potential issues.

Apart from conducting memory-related analysis, the DevOps team can look into the performance of the application and determine the root cause of the degraded performance (if any). With regard to this, employing the right tool and conducting analysis on Garbage Collection activities will reveal whether the poor performance is due to GC or outside of the GC. The Memory Analyzer tool, which is available as a plugin to Eclipse, can be employed to conduct memory-related analysis and gather enough information. In the same pattern, the plugin " Garbage Collection Memory Visualizer" can be employed to conduct analysis on verbose GC data.

As a case study I would like to share one of the scenarios that we encountered in our organization and how we isolated the issue before engaging the right team to fix it. One of our customers upgraded to the latest application release from a previous release and noticed a significant performance degradation in the throughput. As a first step, we confirmed the customer's claim by reproducing the reported issue in our environment. Having a local reproduction environment provided us with various opportunities to try out various things when narrowing down the issue. After the first level of analysis, we confirmed the area or component that was contributing to the observed behavior and a command-line parameter was recommended to workaround the issue.The provided recommendation was tested in our local reproduction environment with success and this gave us the confidence that the  issue can be overcome with the current recommendation.

On further analysis, we engaged the appropriate tool to determine the percentage of time consumed and captured the snapshots with the latest release and the previous release where the issue was not noticed.This level of analysis revealed the exact area where more time was spent. Once these snapshots were shared with the development team, the development team's task was much easier as the area of code was already narrowed down for fixing.This way, we isolated the issue and helped the customer overcome the problem.

More Stories By ChandraShekar Dattatreya

Chandra Shekara Dattatreya is a DevOps guy working in a Fortune-500 company and has 10+ years' of experience debugging JVM-related issues. In the course of debugging, he has encountered multiple scenarios from various customers and provided solutions to all of them with success. In his current role, he is engaged in identifying and resolving JVM-related issues for an e-commerce company.

@DevOpsSummit Stories
"Storpool does only block-level storage so we do one thing extremely well. The growth in data is what drives the move to software-defined technologies in general and software-defined storage," explained Boyan Ivanov, CEO and co-founder at StorPool, in this SYS-CON.tv interview at 16th Cloud Expo, held June 9-11, 2015, at the Javits Center in New York City.
As Marc Andreessen says software is eating the world. Everything is rapidly moving toward being software-defined – from our phones and cars through our washing machines to the datacenter. However, there are larger challenges when implementing software defined on a larger scale - when building software defined infrastructure. In his session at 16th Cloud Expo, Boyan Ivanov, CEO of StorPool, provided some practical insights on what, how and why when implementing "software-defined" in the datacenter.
ChatOps is an emerging topic that has led to the wide availability of integrations between group chat and various other tools/platforms. Currently, HipChat is an extremely powerful collaboration platform due to the various ChatOps integrations that are available. However, DevOps automation can involve orchestration and complex workflows. In his session at @DevOpsSummit at 20th Cloud Expo, Himanshu Chhetri, CTO at Addteq, will cover practical examples and use cases such as self-provisioning infrastructure/applications, self-remediation workflows, integrating monitoring and complimenting integrations between Atlassian tools and other top tools in the industry.
Is advanced scheduling in Kubernetes achievable?Yes, however, how do you properly accommodate every real-life scenario that a Kubernetes user might encounter? How do you leverage advanced scheduling techniques to shape and describe each scenario in easy-to-use rules and configurations? In his session at @DevOpsSummit at 21st Cloud Expo, Oleg Chunikhin, CTO at Kublr, answered these questions and demonstrated techniques for implementing advanced scheduling. For example, using spot instances and cost-effective resources on AWS, coupled with the ability to deliver a minimum set of functionalities that cover the majority of needs – without configuration complexity.
A strange thing is happening along the way to the Internet of Things, namely far too many devices to work with and manage. It has become clear that we'll need much higher efficiency user experiences that can allow us to more easily and scalably work with the thousands of devices that will soon be in each of our lives. Enter the conversational interface revolution, combining bots we can literally talk with, gesture to, and even direct with our thoughts, with embedded artificial intelligence, which can process our conversational commands and orchestrate the outcomes we request across our personal and professional realm of connected devices.