Scaling an App Using App Autoscaler
Page last updated:
Warning: Pivotal Cloud Foundry (PCF) v2.4 is no longer supported because it has reached the End of General Support (EOGS) phase as defined by the Support Lifecycle Policy. To stay up to date with the latest software and security updates, upgrade to a supported version.
This topic describes how Pivotal Cloud Foundry (PCF) users with the Space Developer role can set up and configure the App Autoscaler service in the Apps Manager UI to automatically scale apps based on rules that they set.
You can use the App Autoscaler command-line interface (CLI) plugin to configure App Autoscaler rules from the command line. For more information, see Using the App Autoscaler CLI.
Note: Space Managers, Space Auditors, and all Org roles do not have permission to use App Autoscaler. For help managing user roles, see Managing User Accounts and Permissions Using the Apps Manager.
App Autoscaler is a marketplace service that automatically scales apps in your environment based on app performance metrics or a schedule. This controls the cost of running apps while maintaining app performance.
You can use App Autoscaler to do the following:
- Configure scaling rules that adjust app instance counts based on metrics thresholds
- Modify the maximum and minimum number of instances for an app, either manually or following a schedule
For example, you can configure App Autoscaler to automatically scale down the number of instances for an app over the weekend. You can also configure App Autoscaler to automatically scale up the number of instances for an app when the value of the CPU Usage metric increases above a custom threshold.
For information about configuring autoscaling rules and thresholds, see Configure Autoscaling for an App.
Breaking Change: App Autoscaler relies on API endpoints from Loggregator’s Log Cache. If you disable Log Cache, App Autoscaler will fail. For more information about Log Cache, see Loggregator Introduces Log Cache.
The following diagram shows the components and architecture of App Autoscaler. It also shows how App Autoscaler components interact with Cloud Foundry components to make app scaling decisions.
As demonstrated in the architecture diagram above, App Autoscaler makes scaling decisions based on autoscaling rules that users configure through either the Cloud Foundry Command Line Interface (cf CLI) or through Apps Manager. The Autoscale API stores these autoscaling rules in a MySQL database.
At a predefined interval, known as the scaling interval, the App Autoscaler app reads the scaling rules and retrieves app metric data from the Loggregator Log Cache. Then, App Autoscaler makes a scaling decision and communicates with the Cloud Controller to scale the app, if necessary.
To use App Autoscaler, you must create an instance of the App Autoscaler service and bind it to any app you want to autoscale. You can do this using either the Apps Manager or from the Cloud Foundry Command Line Interface (cf CLI):
Note: Manual scaling overrides scaling rules that you configure with App Autoscaler. If you manually scale an app bound to an App Autoscaler service instance, the App Autoscaler instance automatically unbinds from that app, and the app scales to the manual setting. For more information, see Managing Apps and Service Instances Using Apps Manager.
To enable App Autoscaler for the app, do the following:
In Apps Manager, select an app from the space in which you created the App Autoscaler service.
Under Processes and Instances, enable Autoscaling.
Click Manage Autoscaling to configure instance limits, scaling rules, and scheduled limit changes for the app. For more information, see Configure Autoscaling for an App.
This section describes how App Autoscaler determines when to scale an app up or down.
It also provides information about the custom metrics, comparison metrics, and default metrics that you can use when you create scaling rules for an app in App Autoscaler.
Every 35 seconds, App Autoscaler makes a decision about whether to scale up, scale down, or keep the same number of instances.
To make a scaling decision, App Autoscaler averages the values of a given metric for the most recent 120 seconds.
App Autoscaler scales apps as follows:
- Increment by one instance when any metric exceeds its maximum threshold.
- Decrement by one instance only when all metrics fall below their minimum thresholds.
- Keep the same number of instances when app metrics do not exceed thresholds.
The following diagram provides an example of how App Autoscaler makes scaling decisions:
As shown in the diagram above, an app has a maximum threshold of 200 milliseconds and a minimum threshold of 80 milliseconds for an HTTP latency metric.
If HTTP latency averages 220 milliseconds for 120 seconds, App Autoscaler scales the app up one instance.
If HTTP latency then averages 70 milliseconds over the next 120 second window and the app’s other scaling metrics also fall below their minimum thresholds, App Autoscaler scales the app down one instance.
If the average value for HTTP latency over a 120 second window is below the maximum threshold of 200 milliseconds and above the minimum threshold of 80 milliseconds, then App Autoscaler maintains the same number of instances for the app.
You can also set a maximum and minimum number of instances. For example, if an app exceeds the maximum threshold of a given metric, but the number of instances is already at the maximum number of allowed instances, App Autoscaler does not scale up the app.
For more information about setting a maximum and minimum number of instances, see Create or Modify Instance Limits.
Pivotal recommends that you define custom metrics for App Autoscaler scaling rules. Custom metrics allow you to define the metrics that are the best indicators of app performance for your environment.
You can configure apps to emit custom metrics out of the Loggregator Firehose using Metric Registrar. For steps on how to configure your apps to emit custom metrics with Metric Registrar, see Registering Custom App Metricsr.
You can use the Comparison Metric field in App Autoscaler to define a scaling rule that divides one custom metric by another.
When you add a scaling rule, the Metric field is the dividend and the Comparison Metric field is the divisor.
App Autoscaler includes several default metrics for which you can create scaling rules.
Note: Pivotal recommends that you define custom metrics for scaling rules instead of using the default metrics. Custom metrics allow you to more accurately monitor the performance of your apps based on your environment.
The table below lists the default metrics for App Autoscaler:
|CPU Utilization||Average CPU percentage for all instances of the app.||App CPU utilization data may vary greatly based on the number of CPU cores on Diego cells and app density. For more information, see PCF Autoscaler advisory for scaling Apps based on the CPU utilization.|
|Container Memory Utilization||Average memory percentage for all instances of the app.|
|HTTP Throughput||Total HTTP requests per second (divided by the total number of app instances).||It is difficult to determine whether high throughput is evidence of good system performance, or if app performance is poor given the high number of requests. For more information, see Autoscaling using HTTP Throughput & Latency metrics.|
|HTTP Latency||Average latency of apps response to HTTP requests. This does not include Gorouter processing time or other network latency.
Average is calculated on the middle 99% or middle 95% of all HTTP requests.
|RabbitMQ Depth||The queue length of the specified queue.|
App Autoscaler keeps instance counts within an allowable range defined by minimum and maximum values, or instance limits.
For more information about how App Autoscaler makes scaling decisions for an app, see How App Autoscaler Determines When to Scale.
Follow the procedures in the sections below to set any of the following:
- Create or Modify Instance Limits
- Add or Delete Scaling Rules
- Create or Modify Scheduled Limit Changes
Follow these steps to manually modify instance limits:
Note: You can also schedule changes to your instance limits for a specific date and time. For more information, see Scheduled Limit Changes.
In Apps Manager, navigate to the Overview page for your app and click Manage Autoscaling under Processes and Instances.
In the Instance Limits section, set values for Minimum and Maximum.
Click Apply Changes.
The following procedures describe how to add and delete scaling rules for your apps with App Autoscaler.
For more information about scaling rules and metrics in App Autoscaler, see About App Autoscaler Scaling Rules.
Add a Scaling Rule
To add a scaling rule for an app:
In the Manage Autoscaling pane, click Edit next to Scaling Rules. The Edit Scaling Rules pane appears.
Click Add Rule.
In the Select type dropdown, select the metric for the new scaling rule.
Set the minimum and maximum thresholds for the metric using the table in the Scaling Rule Metrics section above as a guide.
Select or fill in any other fields that appear under the threshold fields:
- If you are adding an HTTP Latency rule, configure Percent of traffic to apply.
- If you are adding a RabbitMQ depth rule, provide the name of the queue to measure.
- If you are adding a Custom rule, enter your custom Metric.
- If you are adding a Compare rule, enter values in the Metric and Comparison Metric fields.
Delete a Scaling Rule
To delete a scaling rule for an app:
Click the × icon next to the rule you want to delete.
Because app demand often follows a weekly, daily, or hourly schedule, you can schedule App Autoscaler to change the allowable instance range to track expected surges or quiet periods.
Create or Modify a Scheduled Limit Change
Click Edit next to Scheduled Limits.
Click Add New to add a new scheduled limit or select an existing entry to modify by clicking EDIT next to the entry.
Edit the following values:
- Date and Time (local): Set the date and time of the change.
- Repeat (Optional): Set the day of the week for which you want to repeat the change.
Min and Max: Set the allowable range within which App Autoscaler can change the instance count for an app.
To delete an existing entry, click the x icon next to the entry you want to delete.
Example: Scale Down for the Weekend
To schedule an app to scale down for a weekend, you can enter two rules as follows:
- Scale down to a single instance on Friday evening:
- Date and Time (local):
- Repeat (Optional):
- Min and Max:
- Date and Time (local):
- Increase instances to between 3 and 5 on Monday morning:
- Date and Time (local):
- Repeat (Optional):
- Min and Max:
- Date and Time (local):
App Autoscaler logs all autoscaling events.
View Event History
To view all autoscaling events in the past 24 hours, click View More in the Event History section of the Manage Autoscaling pane.
Manage App Autoscaler Notifications
Autoscaler emails or texts its event notifications to all space users by default.
To subscribe or unsubscribe from autoscaling event notifications, do the following:
Navigate to the Manage Notifications page of PCF.
Note: If installed, Notifications Management should be available at
Choose which notifications you want to receive from App Autoscaler: