Hello,
I have some questions related to health checks. The background is that during load testing I found that if we have a custom healthcheck path set Render starts shutting down services because they don’t respond to healthchecks fast enough even tho they are still serving requests from our app. Disabling
the custom health check path greatly increased the load our app can handle (this is in scenarios that push the app to the limit).
My questions are:
Are deploys still zero-downtime even with the health check disabled?
How does Render determine if a service is ready to handle requests without the health check?
Is there an option to set longer health check timeouts or something similar so that we can have the health check enabled but not get our instances turned under heavy load? (unless they are unresponsive for very long)
Health checks are essential because they’re how we determine if your service is running smoothly; unfortunately, they can’t be turned off or customized beyond setting the path. If you don’t set a specific health check path, we default to a simple TCP probe to the host and port you’ve set. Ideally, your health check path should be something straightforward that returns a 200 response without doing any processing—just a quick way for us to check your app’s responsiveness.
You can find out more about health checks here: https://docs.render.com/deploys#health-check-protocol. We only restart your application if it fails these checks for 60 seconds, which is a sign of a critical issue since these are light calls. If they’re failing, other types of requests are probably struggling too.
Consider autoscaling to handle higher loads during peak traffic times to avoid these issues.