User blog comment:Wiki-o-slay/Why shouldn't you use health checks?/@comment-26402117-20180816162857/@comment-28377712-20180817133029

The services responsible for Discussions live in Kubernetes, so they're using Dropwizards Health Checks. They're pretty easy to implement. https://www.dropwizard.io/1.3.5/docs/getting-started.html#creating-a-health-check

As mentioned in the post, implementing health checks relying on dependencies such as database and message broker has proved to be an issue. Since discovering it we've been able to address it in most services.

Another concern is the Dropwizard using a separate thread pool for health checks rather than the same one as for regular requests. In situations where thread pool for normal requests locks up or gets exhausted the health check will not report it. However threads being exhausted does necessarily mean that the application is unhealthy or is not progressing with its work. It may just mean that the application is under a big load, so restarting one of the instances will make matters worse. Fortunately we have defence mechanisms in place which safeguard us against thread pools being exhausted by dependencies not responding so this haven't been an issue.

Mostly health checks allow us to detect if the application has started up properly and is ready to receive traffic and in some cases it can help us detect that it has degraded.