diff --git a/app/code/Magento/Sales/Model/EmailSenderHandler.php b/app/code/Magento/Sales/Model/EmailSenderHandler.php
index fe8f1685fe525..7c7005bf0da75 100644
--- a/app/code/Magento/Sales/Model/EmailSenderHandler.php
+++ b/app/code/Magento/Sales/Model/EmailSenderHandler.php
@@ -90,6 +90,9 @@ public function sendEmails()
if ($this->globalConfig->getValue('sales_email/general/async_sending')) {
$this->entityCollection->addFieldToFilter('send_email', ['eq' => 1]);
$this->entityCollection->addFieldToFilter('email_sent', ['null' => true]);
+ $this->entityCollection->setPageSize(
+ $this->globalConfig->getValue('sales_email/general/sending_limit')
+ );
/** @var \Magento\Store\Api\Data\StoreInterface[] $stores */
$stores = $this->getStores(clone $this->entityCollection);
diff --git a/app/code/Magento/Sales/Test/Unit/Model/EmailSenderHandlerTest.php b/app/code/Magento/Sales/Test/Unit/Model/EmailSenderHandlerTest.php
index 56ec763a31cfe..e26b6e52b8d17 100644
--- a/app/code/Magento/Sales/Test/Unit/Model/EmailSenderHandlerTest.php
+++ b/app/code/Magento/Sales/Test/Unit/Model/EmailSenderHandlerTest.php
@@ -118,7 +118,7 @@ public function testExecute($configValue, $collectionItems, $emailSendingResult)
$path = 'sales_email/general/async_sending';
$this->globalConfig
- ->expects($this->once())
+ ->expects($this->at(0))
->method('getValue')
->with($path)
->willReturn($configValue);
diff --git a/app/code/Magento/Sales/etc/adminhtml/system.xml b/app/code/Magento/Sales/etc/adminhtml/system.xml
index 9d6d11d56c81f..7d06e0f7b74c4 100644
--- a/app/code/Magento/Sales/etc/adminhtml/system.xml
+++ b/app/code/Magento/Sales/etc/adminhtml/system.xml
@@ -132,6 +132,14 @@
Magento\Config\Model\Config\Source\Enabledisable
Magento\Sales\Model\Config\Backend\Email\AsyncSending
+
+
+ Limit how many entities (orders/shipments/etc) will be processed during one cron run.
+ required-number validate-number validate-greater-than-zero
+
+ 1
+
+
diff --git a/app/code/Magento/Sales/etc/config.xml b/app/code/Magento/Sales/etc/config.xml
index da2408416133d..d4d10bfa6dcce 100644
--- a/app/code/Magento/Sales/etc/config.xml
+++ b/app/code/Magento/Sales/etc/config.xml
@@ -29,6 +29,7 @@
0
+ 50
1
diff --git a/app/code/Magento/Sales/etc/di.xml b/app/code/Magento/Sales/etc/di.xml
index 0f69389c2969e..3c246b02393fe 100644
--- a/app/code/Magento/Sales/etc/di.xml
+++ b/app/code/Magento/Sales/etc/di.xml
@@ -354,43 +354,43 @@
- SalesOrderSendEmails
+ SalesOrderSendEmails
- SalesOrderInvoiceSendEmails
+ SalesOrderInvoiceSendEmails
- SalesOrderShipmentSendEmails
+ SalesOrderShipmentSendEmails
- SalesOrderCreditmemoSendEmails
+ SalesOrderCreditmemoSendEmails
- SalesOrderSendEmails
+ SalesOrderSendEmails
- SalesOrderInvoiceSendEmails
+ SalesOrderInvoiceSendEmails
- SalesOrderShipmentSendEmails
+ SalesOrderShipmentSendEmails
- SalesOrderCreditmemoSendEmails
+ SalesOrderCreditmemoSendEmails