Code Monkey home page Code Monkey logo

jvm-gc-logs-analyzer's Introduction

jvm-gc-logs-analyzer

This project is a Java Virtual Machine and Garbage Collector log analyzer. It is dedicated to JVM 11 and above (JVM 8 support is under development). The logs have to be in a proper format with proper decorators, check sections at the end for limitations and working examples.

The project creates two artifacts:

  • analyzer-web.jar - web application that is deployed on http://gclogs.com
  • analyzer-standalone.jar - much faster standalone Swing application

How to install - from binaries

Simply download latest release.

How to install - from sources

git clone --depth 1 https://github.com/krzysztofslusarski/jvm-gc-logs-analyzer.git
cd jvm-gc-logs-analyzer/
mvn clean package

JAVA_HOME should point to JDK 11.

How to run

Standalone application: java -jar analyzer-standalone.jar

Web application: java -jar analyzer-web.jar

Java should point to JDK 11.

Features

Garbage collector logs analyzer

gc*,
gc+stringdedup=debug,
gc+ergo=trace,
gc+age=trace,
gc+phases=trace,
gc+humongous=trace

There are multiple charts and tables generated by this tool. I will show in README only the most important one.

Garbage collector table statistics

Heap before/after garbage collection

G1GC max number of regions

Garbage collector phase time

Allocation rate

Safepoint logs anaylzer

-Xlog:safepoint

From safepoint logs this tool will create tables and charts:

Safepoint operation statistics

In this table you can find aggregated statistics of:

  • each safepoint operation
  • time to safepoint

Total time in phases

This chart shows how much time your JVM spends in safepoint operation, time to safepoint and in your application.

Application time (in time)

This charts show how much time your JVM spends running your application in 2/5/15 seconds windows.

Safepoint operation count

This chart shows distribution of safepoint operation count.

Safepoint operation time

This chart shows distribution of time between each safepoint operation.

Safepoint operation (in time)

This chart shows distribution of safepoint operation in time.

Classloader logs analyzer

-Xlog:class+unload,class+load

From classloader logs this tool will create charts:

Current class count and class loading activity

Thread logs analyzer

-Xlog:os+thread

From OS thread logs this tool will create charts:

Current thread count and thread creation activity

Compilation logs analyzer

-Xlog:jit+compilation=debug

From JIT compilation logs this tool will create charts:

Current compilation count with and without tier distinguish

Code cache and sweeper logs analyzer

-Xlog:codecache+sweep*=trace

From code cache and sweeper logs this tool will create charts:

Current code cache size

Sweeper activity

JVM Xlog configuration

I recommend to use following Xlog configuration

-Xlog:codecache=info,
codecache+sweep*=trace,
class+unload,
class+load,
os+thread,
safepoint,
gc*,
gc+stringdedup=debug,
gc+ergo=trace,
gc+age=trace,
gc+phases=trace,
gc+humongous=trace,
jit+compilation=debug
:file=/tmp/app.log
:level,tags,time,uptime
:filesize=104857600,filecount=5

If you want to change Xlog configuration on runtime, you can do it with:

sudo -u JVM_USER jcmd `pgrep -x java` VM.log
output="file=/PATH/TO/gc.log"
output_options="filesize=104857600,filecount=5"
what="codecache=info,codecache+sweep*=trace,class+unload,class+load,os+thread,safepoint,gc*,gc+stringdedup=debug,gc+ergo=trace,gc+age=trace,gc+phases=trace,gc+humongous=trace,jit+compilation=debug"
decorators="level,tags,time,uptime,pid

Current limitations:

  • Logs from JDK 11, 12, 13 - works with flags below, tested on Parallel, CMS and G1.
  • Logs from JDK 9, 10 - should work.
  • Logs from JDK 8 and below - experimental (GC and safepoints log support, charts and stas are not accurate, because this logs sucks), tested on Parallel and G1, doesn't work with CMS
  • For JDK 11+ decorators: level,tags,time,uptime are needed, check sample Xlog configuration above.
  • UI is optimized for Full HD resolution.
  • There is no exception handling at all :)

How to contribute

  • If you have any idea what other charts/tables I can add please create an issue with explanation why this new feature may be helpful
  • If you have logs that doesn't work create an issue with logs included

jvm-gc-logs-analyzer's People

Contributors

krzysztofslusarski avatar arturowczarek avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.