App Container Lifecycle

Page last updated:

This topic describes the lifecycle of an app container for Pivotal Application Service (PAS) deployments running on the Diego architecture.

Deployment

The app deployment process involves uploading, staging, and starting the app in a container. Your app must successfully complete each of these phases within certain time limits. The default time limits for the phases are as follows:

  • Upload: 15 minutes
  • Stage: 15 minutes
  • Start: 60 seconds

Note: Your administrator can change these defaults. Check with your administrator for the actual time limits set for app deployment.

Developers can change the time limit for starting apps through an app manifest or on the command line. For more information, see Deploying with App Manifests and Using App Health Checks.

Crash Events

If an app instance crashes, PAS automatically restarts it by rescheduling the instance on another container three times. After three failed restarts, PAS waits thirty seconds before attempting another restart. The wait time doubles each restart until the ninth restart, and remains at that duration until the 200th restart. After the 200th restart, PAS stops trying to restart the app instance.

Evacuation

Certain operator actions require restarting VMs with containers hosting app instances. For example, an operator who updates stemcells or installs a new version of PAS must restart all the VMs in a deployment.

PAS automatically relocates the instances on VMs that are shutting down through a process called evacuation. PAS recreates the app instances on another VM, waits until they are healthy, and then shuts down the old instances. During an evacuation, developers may see their app instances in a duplicated state for a brief period.

During this app duplication process, singleton app instances may become temporarily unavailable if the replacement instance does not become healthy within the Diego Cell’s evacuation timeout, which defaults to 10 minutes. Because of this, app developers with a low tolerance for brief downtime may prefer to run several instances of their app. See Run Multiple Instances to Increase Availability.

Shutdown

Pivotal Application Service requests a shutdown of your app instance in the following scenarios:

  • When a user runs cf scale, cf stop, cf push, cf delete, or cf restart-app-instance

  • As a result of a system event, such as the replacement procedure during Diego Cell evacuation or when an app instance stops because of a failed health check probe

To shut down the app, PAS sends the app process in the container a SIGTERM. The process has ten seconds to shut down gracefully. If the process has not exited after ten seconds, PAS sends a SIGKILL.

Apps must finish their in-flight jobs within ten seconds of receiving the SIGTERM before PAS terminates the app with a SIGKILL. For instance, a web app must finish processing existing requests and stop accepting new requests.

Note: One exception to the cases mentioned above is when monit restarts a crashed Diego Cell rep or Garden server. In this case, PAS immediately stops the apps that are still running using SIGKILL.