Checks, limits and timeouts on the Divio platform#

Various processes and operations on our platform are subject to checks, timeouts and limits. Knowing what these are can help pin-point problems experienced when building or running applications.

Deployment health-checks#

The deployment process must complete each stage of its operations successfully within a given time. If any of these checks fail, the deployment itself will fail.

  • Docker build stage; will time out with a failure if not completed within 30 minutes.

  • Release commands stage; each command will time out with a failure if not completed within 30 minutes.

  • Scaling: each container must return a positive HTTP response to our application controller within 20 seconds of establishing a connection. The application controller will repeat this test at intervals, for up to 60 seconds.

When a deployment copies data from another environment, the copy operation will time out with a failure if not completed within 30 minutes.

Run-time limits#

Request timeouts#

Traffic reaches customer applications via our load-balancers.

  • connection: the load-balancer connects to the one of the application’s containers; if a handshake is not completed within 5 seconds, it will try to connect to another container, if one is available

  • send: the load-balancer sends a request to an application; if this does not complete successfully within 10 seconds, it will try to connect to another container, if one is available

  • read: after delivering a request to the application, the load-balancer must receive a response within 30 seconds; this is also the maximum allowed time between responses in case of chunked transfers

If any of these time limits are exceeded, the load-balancer will report a HTTP 504 Gateway timeout.

If the connection and send phases do not complete successfully within a total of 15 seconds, the load-balancer will report a HTTP 502 Application not responding error and will not attempt to connect to any remaining containers.

In almost all cases, these errors are caused by a fault in the application, and its run-time logs will provide clues as to its nature.

Request sizes#

  • maximum request header size: determined by the application itself

  • maximum request body size: 500MB; imposed by our load-balancer

Other limits#

  • concurrent database connections per environment: limited to 60

  • requests to Elasticsearch clusters: if the Elasticsearch load-balancer does not receive a response within within 120 seconds it will issue an HTTP 504 Gateway timeout

Operations#

Divio CLI database and media push and pull#

  • limited to 2GB - in practice, keeping transfer size below 500MB is strongly recommended; for larger media transfers, use an S3 client

  • terminated after 30 minutes