The last and very important criteria to ensure control over the performance and to ensure that the performance is bounded (your application doesn't start being very slow) is related to timeouts.
An application has timeouts everywhere even if you don't always see them:
- The HTTP connector, or any network connector in general, has timeouts to force the release of clients connected for too long.
- Databases generally have timeouts as well. It can be a client-side (network) timeout or a server-side setting. For instance, MySQL will cut any connection that lasts for more than 8 hours by default.
- Thread pools can handle timeouts if an execution is too long.
- The JAX-RS client supports vendor-specific timeout configuration to avoid blocking the network later.
Configuring timeouts enables you to ensure that if something starts being wrong in your system, including a remote...