diff --git a/core/lib/Drupal/Core/Cron.php b/core/lib/Drupal/Core/Cron.php
index 1c17c94..168bc33 100644
--- a/core/lib/Drupal/Core/Cron.php
+++ b/core/lib/Drupal/Core/Cron.php
@@ -111,12 +111,13 @@ public function run() {
     $this->accountSwitcher->switchTo(new AnonymousUserSession());
 
     // Try to allocate enough time to run all the hook_cron implementations.
-    drupal_set_time_limit(240);
+    $time_limit = \Drupal::config('system.cron')->get('treshold.time_limit');
+    drupal_set_time_limit($time_limit);
 
     $return = FALSE;
 
     // Try to acquire cron lock.
-    if (!$this->lock->acquire('cron', 900.0)) {
+    if (!$this->lock->acquire('cron', $time_limit * 3.75)) {
       // Cron is still running normally.
       $this->logger->warning('Attempting to re-run cron while it is already running.');
     }
diff --git a/core/modules/config/tests/config_override_test/config/install/system.cron.yml b/core/modules/config/tests/config_override_test/config/install/system.cron.yml
index e4a27dc..f40bc5c 100644
--- a/core/modules/config/tests/config_override_test/config/install/system.cron.yml
+++ b/core/modules/config/tests/config_override_test/config/install/system.cron.yml
@@ -1,4 +1,5 @@
 threshold:
   requirements_warning: 172800
   requirements_error: 1209600
+  time_limit: 240
 
diff --git a/core/modules/system/config/install/system.cron.yml b/core/modules/system/config/install/system.cron.yml
index e6f30d3..01b7c9e 100644
--- a/core/modules/system/config/install/system.cron.yml
+++ b/core/modules/system/config/install/system.cron.yml
@@ -1,3 +1,4 @@
 threshold:
   requirements_warning: 172800
   requirements_error: 1209600
+  time_limit: 240
diff --git a/core/modules/system/config/schema/system.schema.yml b/core/modules/system/config/schema/system.schema.yml
index e34d375..500ed05 100644
--- a/core/modules/system/config/schema/system.schema.yml
+++ b/core/modules/system/config/schema/system.schema.yml
@@ -72,6 +72,9 @@ system.cron:
         requirements_error:
           type: integer
           label: 'Requirements error period'
+        time_limit:
+          type: integer
+          label: 'Cron time limit'
 
 system.date:
   type: config_object
diff --git a/core/profiles/standard/config/install/system.cron.yml b/core/profiles/standard/config/install/system.cron.yml
index e6f30d3..01b7c9e 100644
--- a/core/profiles/standard/config/install/system.cron.yml
+++ b/core/profiles/standard/config/install/system.cron.yml
@@ -1,3 +1,4 @@
 threshold:
   requirements_warning: 172800
   requirements_error: 1209600
+  time_limit: 240
diff --git a/core/profiles/testing_config_overrides/config/install/system.cron.yml b/core/profiles/testing_config_overrides/config/install/system.cron.yml
index e9c97bc..e55bc2e 100644
--- a/core/profiles/testing_config_overrides/config/install/system.cron.yml
+++ b/core/profiles/testing_config_overrides/config/install/system.cron.yml
@@ -1,3 +1,4 @@
 threshold:
   requirements_warning: 259200
   requirements_error: 1209600
+  time_limit: 240
