Cloud Platform

Using scheduled jobs to support your application

 

To help your application run more efficiently, you must conduct regular website maintenance. You can automate maintenance tasks or jobs to run at scheduled intervals using the Scheduled Jobs page in the Cloud Platform user interface. This functionality is sometimes referred to as a cron job. For more information about why you must run cron jobs regularly, see Cron automated tasks overview.

Note for Site Factory subscribers

For information about cron and scheduling tasks on Site Factory, see Managing cron tasks using the management console.

Scheduled jobs are specific to the environment where they’re created. Although you can’t create a job executing a command across several environments based on the same schedule, you can create a job for each environment, with each job using the same command line and schedule.

You must use the Scheduled Jobs page for scheduled jobs and not the default Drupal cron. Compared to Drupal cron, using the Scheduled Jobs page is more reliable, and provides support for adding extensive and integrated logging for Cloud Platform applications.

Disabling Drupal’s automated cron

By default, Drupal cron (also known as poor man’s cron) is enabled for websites. Acquia recommends you disable Drupal cron and rely on the Cloud Platform functionality for running scheduled jobs to ensure that they will run on the schedule you specify. By contrast, Drupal’s default cron functionality is only triggered by HTTP requests and can unnecessarily keep PHP processes running for a long time, potentially causing elevated resource utilization or slower site performance. Disabling Drupal cron also enables you to avoid the performance reduction on page requests. For more information, see Automated Cron.

To disable Drupal cron:

  1. Sign in to your Drupal website as an administrator.
  2. Go to Configuration > System > Cron (http://[site_URL]/admin/config/system/cron).
  3. In the Run cron every list, click Never.
Note

This option is available in the current Drupal version if you have already installed the Automated Cron module. If this option does not exist for your Drupal version, you are not required to perform any additional steps.

  1. Click Save configuration.
  2. Uninstall the Automated Cron Drupal module.

Creating scheduled jobs

Note

To create a scheduled job for an environment:

  1. Sign in to the Cloud Platform user interface.
  2. Select an application and an environment.
  3. Click Scheduled Jobs.
  4. Click Add Job to add a scheduled job.

  5. In the Create a new scheduled job on [env] dialog, enter a descriptive name for the job in the Job name field.
  6. In the Command field, enter the command you want Cloud Platform to routinely run for the environment. You can enter any commands allowed from an SSH connection to the environment, as long as they meet the limits and special considerations for scheduled jobs.
Note

You must test commands using SSH in your Cloud Platform environment to ensure they work before adding the commands as automated cron commands.

  1. Select how often you want to run the command from the menus in the Command frequency section:

    • Every X minute, where X is the number of minutes
    • Every hour, at a number of minutes past the hour
    • Every day, at a certain time
    • Every week, at a certain day of the week and time of day
    • Every month, at a certain day of the month and time of day
    • Every year, at a certain month, day of the month, and time of day

    Alternatively, you can enter the cron frequency as a string. For more information, see Cron time string format.

Note
  • All times are UTC.
  • Running cron too often can affect performance.
  • On Cloud Next:
    • You cannot set crons at frequencies of less than 5 minutes.
    • Your cron task duration must not be more than an hour. If your cron job lasts longer than an hour, it terminates.
  1. Click Add.

    After you create a new job, Cloud Platform displays the job in the list of scheduled jobs for the environment where it was created.

Using the Cloud Platform wrapper script for Drush cron

For most applications on Cloud Platform, the following basic cron functionality will ensure timely cron execution and essential logging of cron output:

/usr/local/bin/cron-wrapper.sh [site].[env] http://[site_URL]                   

In this example, you will replace the above placeholders with the following information:

  • [site] is the name of your application on Cloud Platform.
  • [env] is your environment (typically one of dev, test, or prod).
  • [site_URL] is your environment’s URL (as listed on the Cloud > Domains page). If you are using Drupal multisite, your cron jobs are specific to each website in the multisite installation. Use the URL of the website in the installation you want to target.

Do not append a cron_key to the website URL.

The above script will log the output of drush cron to a file named drush-cron.log. For example, if your application’s codebase is named mysite, the log file for the prod environment will be located in the following directory:

  • Cloud Classic environments:

    /var/log/sites/example.prod/logs/web-9876/drush-cron.log.

  • Cloud Next environments:

    /shared/logs/drush-cron.log

Limitations

When creating scheduled jobs, the following limitations apply:

  • Commands in scheduled jobs can’t be longer than 255 characters. If you must run a command longer than 255 characters, you must incorporate it by running a shell script you run as a scheduled job.
  • The % character is a special character in cron commands. If your command uses this special character, be sure to precede it with a backslash (\). For example: your_log_file_$(date +\%F).log.
  • Commands entered should always provide absolute paths to ensure correct execution as shown in the following examples.
  • When you use the Acquia cron wrapper, the cron job uses the PHP memory limit for your environment (by default, 128 MB). When you use Drush cron directly, it will use the command line process memory limit, which is 512 MB.

Managing scheduled jobs

Each job you create on the Scheduled Jobs page has links to help you manage the job, which allow you to do the following:

  • Disable: Stops the scheduled job from running until you click Enable. Disabled jobs move to the Disabled list that follows the Enabled list.
  • Edit: Opens a window allowing you to change the attributes of the scheduled job. After you make your changes, click Edit.
  • Remove: Opens a window deleting the scheduled job when you click Remove. If you remove a scheduled job, you can’t recover it, and you must manually recreate it to restore the job.
Note

You can’t edit or remove administrative jobs you didn’t create for your environments, including automated nightly backups.

Dedicated cron infrastructure on Cloud Platform Enterprise

Some Cloud Platform Enterprise subscriptions have a dedicated cron infrastructure due to the particular performance needs of their applications. To configure a scheduled job on a dedicated cron infrastructure, contact Acquia Support. Environments running on Cloud Next technologies have dedicated cron capacity by default.

Security considerations for scheduled tasks

Scheduled tasks are not encrypted. Acquia recommends that scheduled tasks must not include sensitive items such as:

  • SSL certificates
  • SSH keys
  • Login credentials
  • API credentials