What is it about?
OpenShift has seen a lot of traction with the release of its third version based on Kubernetes a couple of years ago. More and more companies after a thorough evaluation of OpenShift Container Platform (OCP) have built an on-premise or in the cloud PaaS. With the next step, they have started to run their applications on OCP. One of the important aspects of running applications in production is the capacity of quickly restoring services to the normal service level after an incident followed by the identification and the resolution of the underlying problem. In this respect, I want to present in this blog a few approaches for troubleshooting Java applications running on OpenShift. Similar approaches can be taken with other languages.
Debugging applications during development phase can be done thanks to features like:
- Debug mode for resolving issues during startup.
- Port forwarding for connecting an IDE like JBDS to an application running in a remote container and debugging it with breakpoints and object inspection.
This has been presented in blogs like here and here.
In this blog, on the contrary, I want to focus on troubleshooting applications in production and to cover things like capturing heap and thread dumps, resource consumption per thread. These are techniques that have more than once been helpful in the past for resolving deadlocks, memory leaks or performance degradation due to excessive garbage collection for instance.
Let’s get into the heart of the matter!
Continue reading “Troubleshooting Java applications on OpenShift”
JBoss Tools 4.5 and Red Hat JBoss Developer Studio 11.0 for Eclipse Oxygen are here waiting for you. Check it out!
Continue reading “Announcing Red Hat Developer Studio 11.0.0.GA and JBoss Tools 4.5.0.Final for Eclipse Oxygen”
Join us on Thursday, July 20 at 12:00 EDT, for our first in a series of new technical webinars provided by DevNation Live, Going Reactive with Java.
Continue reading DevNation Live Webinar Series: Going Reactive with Java
The pace of Java EE releases has been slowing and has been unable to adapt to the rapid rise of microservices. MicroProfile was created as a means to collaborate with vendors, individuals, and organizations like Java user groups in an open forum, to rapidly bring microservices to traditional Java EE developers. We moved the project to the Eclipse Foundation and have officially renamed it Eclipse MicroProfile. Red Hat is implementing MicroProfile specifications via WildFly Swarm and optimizing it for use on OpenShift.
Continue reading “MicroProfile: Optimizing Enterprise Java for a Microservices Architecture”
Most of the time, when we think about collecting, parsing and storing Logs, the first thing that pops in our mind is the ElasticStack or ELK. It is well positioned in developer and sysadmin’s minds. The stack combines the popular Elasticsearch, Logstash and Kibana projects together to easy the collection/aggregation, store, and visualization of application logs. As an Apache Camel rider and Infinispan enthusiast, I prepared this exercise to produce my own log collector and store stack using Red Hat’s products, JBoss Fuse and JBoss Data Grid, instead.
Continue reading “Implementing a Log Collector using Red Hat JBoss Fuse and Red Hat JBoss Data Grid”
JBoss Tools 4.4.4 and Red Hat JBoss Developer Studio 10.4 for Eclipse Neon.3 are here waiting for you. Check it out!
Continue reading “JBoss Tools and Red Hat Developer Studio Maintenance Release for Eclipse Neon.3”
There was a time when the word “.NET” was virtually synonymous with bloat, vendor lock-in, and Windows. .NET Core is the exact opposite. It’s blazingly fast. It’s open source under a permissive license (Mostly MIT, some parts Apache-2.0). Unlike some other open-source platforms, .NET Core’s Contributor License Agreement does not grant exclusive privileges to a single corporation. .NET Core is cross-platform, allowing you to target Windows, Mac, Docker, and many flavors of Linux. My favorite resource for getting started with .NET core is Don Schenck’s free book. This post, I hope, can serve as an addendum specifically for Java developers exploring .NET’s flagship language, C#. While C# borrows much from Java, there are important differences to be aware of. Fortunately, some of them are for the better. In this series of posts, I’ll go over a few of the most prominent differences.
Continue reading “From Java to .NET Core. Part 1”