Java Performance Tuning

Java(TM) - see bottom of page

|home |services |training |newsletter |tuning tips |tool reports |articles |resources |about us |site map |contact us |
Tools: | GC log analysers| Multi-tenancy tools| Books| SizeOf| Thread analysers| Heap dump analysers|

Our valued sponsors who help make this site possible
JProfiler: Get rid of your performance problems and memory leaks! 

Training online: Concurrency, Threading, GC, Advanced Java and more ... 

News May 2021

Get rid of your performance problems and memory leaks!

Modern Garbage Collection Tuning
Shows tuning flow chart for GC tuning

Java Performance Training Courses
COURSES AVAILABLE NOW. We can provide training courses to handle all your Java performance needs

Java Performance Tuning, 2nd ed
The classic and most comprehensive book on tuning Java

Java Performance Tuning Newsletter
Your source of Java performance news. Subscribe now!
Enter email:

Training online
Threading Essentials course

Get rid of your performance problems and memory leaks!

Back to newsletter 246 contents

Health checks, metrics, telemetry, logs, tracing, profiling, ... we have a gamut of different things in Observability. How do they all fit together? Here's my take, in order of increasing sophistication:

  1. Is the process running? Use a liveness check (a health check). The answer is a yes or no. If no, need to (re)start the process
  2. Is the process ready to process requests? Use a readiness check (a more sophisticated health check). The answer is a yes or no. If yes, can route requests to the process, otherwise wait until it is ready, or a timeout is reached (and try restarting it or send an error notification)
  3. Is the service performing adequately (adequate performance is defined by a Service Level Objective - SLO)? The answer is a yes or no for each SLO, measured using telemetry (gathering metrics from components) and thresholds. The metrics used to measure the SLO are termed SLIs - Service Level Indicators. Can be measured from every request or from sampled requests; Can be measured at the server-side (service times), or from the actual clients (real-user-metrics), or from client-side generated requests (synthetic transactions).
  4. Where is the service failing the SLO? The answer is a prioritized list of hardware-resource/infrastructure-component/JVM-space/application/request/context/process/thread/code stack/line of code (the more sophisticated the tool, the more detailed the answer). Identified by distributed tracing (which needs a unique request ID propagated across services, with transaction context)
  5. Why is it failing the SLO? The answer is "because it was doing X", identified by thread-traces/(execution/memory/contention)-profiles/log-events (metrics extracted from logs)/log-lines (most easily found with trace IDs from the previous answer, or by making the logs queryable).

That's about as succinct as you can get in detailing Observability. Now on to all the usual newsletter list of links, tips, tools, news and articles, and as usual I've extracted all the tips into this month's tips page

A note from this newsletter's sponsor

Get rid of your performance problems and memory leaks!


Java performance tuning related news


Java performance tuning related tools


Jack Shirazi

Back to newsletter 246 contents

Last Updated: 2024-01-29
Copyright © 2000-2024 All Rights Reserved.
All trademarks and registered trademarks appearing on are the property of their respective owners.
Java is a trademark or registered trademark of Oracle Corporation in the United States and other countries. is not connected to Oracle Corporation and is not sponsored by Oracle Corporation.
RSS Feed:
Trouble with this page? Please contact us