Timeouts on Pantheon

Detailed information about timeout errors on your site.


Rules are for the good of the group, and timeouts are no exception. We've configured timeouts to fit normal program execution. Sometimes timeouts can be reached when working with a particularly inefficient bit of code or when attempting to execute a long-running job that would be better suited for Terminus.

User-Configurable Timeouts

Name Timeout Description
PHP max_execution_time 120 seconds Maximum time a script can run before being terminated by the parser. Helps prevent poorly written scripts from tying up your application container's PHP workers.

You can reduce this timeout to be less than 120 seconds via settings.php or wp-config.php, but you cannot increase it beyond 120 seconds.
Solr 5 seconds Typically reached if you try to index too much at once (use a reasonable batch size and avoid indexing large binary files).

Timeouts That are not Configurable

Name Maximum Description
Connection Timeout 60 seconds Number of seconds to wait for a timeout.
First Byte Timeout 60 seconds Number of seconds to wait for the first byte.
Between Bytes Timeout 60 seconds Number of seconds to wait for between bytes.
Pantheon executed Drupal cron 180 seconds Only applies to Pantheon's automatic hourly execution of drush cron
PHP set_time_limit 120 seconds Number of seconds a script can run. If reached, the script returns a fatal error.
Load Balancer 120 seconds Applies to HTTPS requests and requests to a DNS A record. Requests using the Pantheon CNAME for HTTP requests are not limited.
SSH 10 minutes with no communication
60 minutes hard limit
Applies to remote Drush commands, SSH tunneling, SFTP, rsync
MySQL net_write_timeout 90 seconds Number of seconds to wait for a block to be written to a connection before aborting the write.
MySQL net_read_timeout 90 seconds Number of seconds to wait for more data from a connection before aborting the read.
MySQL wait_timeout 420 seconds Number of seconds the server waits for activity on a noninteractive connection before closing it.
MySQL interactive_timeout 420 seconds Number of seconds the server waits for activity on an interactive connection before closing it.
Nginx fastcgi_read_timeout 900 seconds PHP won't run forever.

Frequently Asked Questions

Can I manually run Drupal cron for longer than the Pantheon executed Drupal cron?

Yes, just use terminus drush <site>.<env> -- cron using Terminus. With that said, most slow cron executions are due to PHP errors or a slow external service. Rather than throwing more resources at an inefficient process, determine why it's slow and fix the root cause.

What if I run into a timeout when using the Drupal Migrate UI?

As strongly recommended by the Migrate module, use Drush, which can be invoked through Terminus. You can also configure Migrate to trigger Drush imports from the UI by configuring the migrate_drush_path variable to:

$conf['migrate_drush_path'] = $_ENV['HOME'] . '/drush';

Can Pantheon change the non-configurable timeouts for my site?

No, these settings apply to every site on Pantheon. One of the ways Pantheon scales so well is by avoiding one-off configurations. We run a highly tuned universal configuration for optimized performance.

How do I change the Solr timeout on Drupal?

Edit the pantheon_apachesolr module within your Drupal site installation and enjoy your voided warranty (we can't support user modifications). Seriously, this treats a symptom and not the problem; you should reduce the batch size instead and avoid indexing large binary files.