Skip to content

Commit 535860a

Browse files
authored
Merge pull request #928 from magento-performance/pr-develop
[Perfrormance] Issues
2 parents 5405209 + 6b8dc54 commit 535860a

File tree

9 files changed

+259
-88
lines changed

9 files changed

+259
-88
lines changed

app/code/Magento/CatalogImportExport/Model/Import/Product.php

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2116,7 +2116,6 @@ protected function _saveProductWebsites(array $websiteData)
21162116
*/
21172117
protected function _saveStockItem()
21182118
{
2119-
$indexer = $this->indexerRegistry->get('catalog_product_category');
21202119
/** @var $stockResource \Magento\CatalogInventory\Model\ResourceModel\Stock\Item */
21212120
$stockResource = $this->_stockResItemFac->create();
21222121
$entityTable = $stockResource->getMainTable();
@@ -2172,13 +2171,25 @@ protected function _saveStockItem()
21722171
$this->_connection->insertOnDuplicate($entityTable, array_values($stockData));
21732172
}
21742173

2175-
if ($productIdsToReindex) {
2176-
$indexer->reindexList($productIdsToReindex);
2177-
}
2174+
$this->reindexProducts($productIdsToReindex);
21782175
}
21792176
return $this;
21802177
}
21812178

2179+
/**
2180+
* Initiate product reindex by product ids
2181+
*
2182+
* @param array $productIdsToReindex
2183+
* @return void
2184+
*/
2185+
private function reindexProducts($productIdsToReindex = [])
2186+
{
2187+
$indexer = $this->indexerRegistry->get('catalog_product_category');
2188+
if (is_array($productIdsToReindex) && count($productIdsToReindex) > 0 && !$indexer->isScheduled()) {
2189+
$indexer->reindexList($productIdsToReindex);
2190+
}
2191+
}
2192+
21822193
/**
21832194
* Retrieve attribute by code
21842195
*

lib/internal/Magento/Framework/Setup/FilePermissions.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ public function getInstallationCurrentWritableDirectories()
141141
*/
142142
private function checkRecursiveDirectories($directory)
143143
{
144+
/** @var $directoryIterator \RecursiveIteratorIterator */
144145
$directoryIterator = new \RecursiveIteratorIterator(
145146
new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS),
146147
\RecursiveIteratorIterator::CHILD_FIRST
@@ -159,6 +160,8 @@ private function checkRecursiveDirectories($directory)
159160
]
160161
);
161162

163+
$directoryIterator->setMaxDepth(1);
164+
162165
$foundNonWritable = false;
163166

164167
try {

setup/performance-toolkit/profiles/ce/extra_large.xml

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,35 @@
1010
<websites>5</websites> <!-- Number of websites to generate -->
1111
<store_groups>5</store_groups> <!--Number of stores-->
1212
<store_views>5</store_views> <!-- Number of store views -->
13-
<simple_products>800000</simple_products> <!-- Simple products count -->
14-
<configurable_products>50000</configurable_products> <!--Configurable products count (each configurable has 3 simple products as options, that are not displayed individually in catalog) -->
15-
<categories>3000</categories> <!-- Number of categories to generate -->
16-
<categories_nesting_level>6</categories_nesting_level> <!-- Nesting level for categories -->
17-
<catalog_price_rules>100</catalog_price_rules> <!-- Number os catalog price rules -->
18-
<cart_price_rules>100</cart_price_rules> <!-- Number of cart price rules -->
19-
<cart_price_rules_floor>5</cart_price_rules_floor> <!-- The price rule condition: minimum products amount in shopping cart for price rule to be applied -->
20-
<customers>5000</customers> <!-- Number of customers to generate -->
13+
<assign_entities_to_all_websites>1</assign_entities_to_all_websites> <!-- Whether to assign all products per each website -->
14+
<simple_products>600000</simple_products> <!-- Simple products count -->
15+
<configurable_products> <!-- Configurable product -->
16+
<config>
17+
<attributes>1</attributes>
18+
<options>24</options>
19+
<sku>Configurable Product %s</sku>
20+
<products>16000</products>
21+
</config>
22+
</configurable_products>
23+
<categories>6000</categories> <!-- Number of categories to generate -->
24+
<categories_nesting_level>5</categories_nesting_level> <!-- Nesting level for categories -->
25+
<customers>10000</customers> <!-- Number of customers to generate -->
26+
27+
<catalog_price_rules>20</catalog_price_rules> <!-- Number of catalog price rules -->
28+
<cart_price_rules>20</cart_price_rules> <!-- Number of cart price rules -->
29+
<cart_price_rules_floor>2</cart_price_rules_floor>
30+
31+
<product_attribute_sets>200</product_attribute_sets> <!-- Number of product attribute sets -->
32+
<product_attribute_sets_attributes>50</product_attribute_sets_attributes> <!-- Number of attributes per set -->
33+
<product_attribute_sets_attributes_values>2</product_attribute_sets_attributes_values> <!-- Number of values per attribute -->
34+
35+
<order_quotes_enable>true</order_quotes_enable>
36+
<order_simple_product_count_from>2</order_simple_product_count_from>
37+
<order_simple_product_count_to>2</order_simple_product_count_to>
38+
<orders>150000</orders> <!-- Orders count -->
39+
2140
<tax_rates_file>tax_rates.csv</tax_rates_file> <!-- Tax rates file in fixtures directory-->
22-
<orders>80000</orders> <!-- Orders count -->
41+
2342
<configs> <!-- Config variables and values for change -->
2443
<config>
2544
<path>admin/security/use_form_key</path>
@@ -68,8 +87,11 @@
6887
<set_scheduled>true</set_scheduled>
6988
</indexer>
7089
</indexers>
71-
<xi:include href="../../config/searchTerms.xml" />
72-
<xi:include href="../../config/searchConfig.xml" />
90+
<xi:include href="../../config/searchTermsLarge.xml" />
7391
<xi:include href="../../config/attributeSets.xml" />
92+
<xi:include href="../../config/searchConfig.xml" />
93+
<xi:include href="../../config/customerConfig.xml" />
94+
<xi:include href="../../config/description.xml" />
95+
<xi:include href="../../config/shortDescription.xml" />
7496
</profile>
7597
</config>

setup/performance-toolkit/profiles/ce/large.xml

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,38 @@
77
-->
88
<config xmlns:xi="http://www.w3.org/2001/XInclude">
99
<profile>
10-
<websites>3</websites> <!-- Number of websites to generate -->
11-
<store_groups>3</store_groups> <!--Number of stores-->
12-
<store_views>3</store_views> <!-- Number of store views -->
13-
<simple_products>400000</simple_products> <!-- Simple products count -->
14-
<configurable_products>25000</configurable_products> <!--Configurable products count (each configurable has 3 simple products as options, that are not displayed individually in catalog) -->
15-
<categories>1000</categories> <!-- Number of categories to generate -->
16-
<categories_nesting_level>3</categories_nesting_level> <!-- Nesting level for categories -->
17-
<catalog_price_rules>50</catalog_price_rules> <!-- Number os catalog price rules -->
18-
<cart_price_rules>50</cart_price_rules> <!-- Number of cart price rules -->
19-
<cart_price_rules_floor>2</cart_price_rules_floor> <!-- The price rule condition: minimum products amount in shopping cart for price rule to be applied -->
20-
<customers>2000</customers> <!-- Number of customers to generate -->
10+
<websites>5</websites> <!-- Number of websites to generate -->
11+
<store_groups>5</store_groups> <!--Number of stores-->
12+
<store_views>5</store_views> <!-- Number of store views -->
13+
<assign_entities_to_all_websites>1</assign_entities_to_all_websites> <!-- Whether to assign all products per each website -->
14+
<simple_products>300000</simple_products> <!-- Simple products count -->
15+
<configurable_products> <!-- Configurable product -->
16+
<config>
17+
<attributes>1</attributes>
18+
<options>24</options>
19+
<sku>Configurable Product %s</sku>
20+
<products>8000</products>
21+
</config>
22+
</configurable_products>
23+
<categories>3000</categories> <!-- Number of categories to generate -->
24+
<categories_nesting_level>5</categories_nesting_level> <!-- Nesting level for categories -->
25+
<customers>5000</customers> <!-- Number of customers to generate -->
26+
27+
<catalog_price_rules>20</catalog_price_rules> <!-- Number of catalog price rules -->
28+
<cart_price_rules>20</cart_price_rules> <!-- Number of cart price rules -->
29+
<cart_price_rules_floor>2</cart_price_rules_floor>
30+
31+
<product_attribute_sets>200</product_attribute_sets> <!-- Number of product attribute sets -->
32+
<product_attribute_sets_attributes>50</product_attribute_sets_attributes> <!-- Number of attributes per set -->
33+
<product_attribute_sets_attributes_values>2</product_attribute_sets_attributes_values> <!-- Number of values per attribute -->
34+
35+
<order_quotes_enable>true</order_quotes_enable>
36+
<order_simple_product_count_from>2</order_simple_product_count_from>
37+
<order_simple_product_count_to>2</order_simple_product_count_to>
38+
<orders>100000</orders> <!-- Orders count -->
39+
2140
<tax_rates_file>tax_rates.csv</tax_rates_file> <!-- Tax rates file in fixtures directory-->
22-
<orders>40000</orders> <!-- Orders count -->
41+
2342
<configs> <!-- Config variables and values for change -->
2443
<config>
2544
<path>admin/security/use_form_key</path>
@@ -68,8 +87,11 @@
6887
<set_scheduled>true</set_scheduled>
6988
</indexer>
7089
</indexers>
71-
<xi:include href="../../config/searchTerms.xml" />
72-
<xi:include href="../../config/searchConfig.xml" />
90+
<xi:include href="../../config/searchTermsLarge.xml" />
7391
<xi:include href="../../config/attributeSets.xml" />
92+
<xi:include href="../../config/searchConfig.xml" />
93+
<xi:include href="../../config/customerConfig.xml" />
94+
<xi:include href="../../config/description.xml" />
95+
<xi:include href="../../config/shortDescription.xml" />
7496
</profile>
7597
</config>

setup/performance-toolkit/profiles/ce/medium.xml

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,38 @@
77
-->
88
<config xmlns:xi="http://www.w3.org/2001/XInclude">
99
<profile>
10-
<websites>1</websites> <!-- Number of websites to generate -->
11-
<store_groups>2</store_groups> <!--Number of stores-->
12-
<store_views>2</store_views> <!-- Number of store views -->
13-
<simple_products>16000</simple_products> <!-- Simple products count -->
14-
<configurable_products>1000</configurable_products> <!--Configurable products count (each configurable has 3 simple products as options, that are not displayed individually in catalog) -->
10+
<websites>3</websites> <!-- Number of websites to generate -->
11+
<store_groups>3</store_groups> <!--Number of stores-->
12+
<store_views>3</store_views> <!-- Number of store views -->
13+
<assign_entities_to_all_websites>1</assign_entities_to_all_websites> <!-- Whether to assign all products per each website -->
14+
<simple_products>24000</simple_products> <!-- Simple products count -->
15+
<configurable_products> <!-- Configurable product -->
16+
<config>
17+
<attributes>1</attributes>
18+
<options>24</options>
19+
<sku>Configurable Product %s</sku>
20+
<products>640</products>
21+
</config>
22+
</configurable_products>
1523
<categories>300</categories> <!-- Number of categories to generate -->
1624
<categories_nesting_level>3</categories_nesting_level> <!-- Nesting level for categories -->
17-
<catalog_price_rules>20</catalog_price_rules> <!-- Number os catalog price rules -->
25+
<customers>2000</customers> <!-- Number of customers to generate -->
26+
27+
<catalog_price_rules>20</catalog_price_rules> <!-- Number of catalog price rules -->
1828
<cart_price_rules>20</cart_price_rules> <!-- Number of cart price rules -->
19-
<cart_price_rules_floor>2</cart_price_rules_floor> <!-- The price rule condition: minimum products amount in shopping cart for price rule to be applied -->
20-
<customers>200</customers> <!-- Number of customers to generate -->
29+
<cart_price_rules_floor>2</cart_price_rules_floor>
30+
31+
<product_attribute_sets>100</product_attribute_sets> <!-- Number of product attribute sets -->
32+
<product_attribute_sets_attributes>50</product_attribute_sets_attributes> <!-- Number of attributes per set -->
33+
<product_attribute_sets_attributes_values>2</product_attribute_sets_attributes_values> <!-- Number of values per attribute -->
34+
35+
<order_quotes_enable>true</order_quotes_enable>
36+
<order_simple_product_count_from>2</order_simple_product_count_from>
37+
<order_simple_product_count_to>2</order_simple_product_count_to>
38+
<orders>50000</orders> <!-- Orders count -->
39+
2140
<tax_rates_file>tax_rates.csv</tax_rates_file> <!-- Tax rates file in fixtures directory-->
22-
<orders>1600</orders> <!-- Orders count -->
41+
2342
<configs> <!-- Config variables and values for change -->
2443
<config>
2544
<path>admin/security/use_form_key</path>
@@ -37,39 +56,42 @@
3756
<indexers> <!-- Indexer mode value (true - Update by Schedule, false - Update on Save) -->
3857
<indexer>
3958
<id>catalog_category_product</id>
40-
<set_scheduled>false</set_scheduled>
59+
<set_scheduled>true</set_scheduled>
4160
</indexer>
4261
<indexer>
4362
<id>catalog_product_category</id>
44-
<set_scheduled>false</set_scheduled>
63+
<set_scheduled>true</set_scheduled>
4564
</indexer>
4665
<indexer>
4766
<id>catalog_product_price</id>
48-
<set_scheduled>false</set_scheduled>
67+
<set_scheduled>true</set_scheduled>
4968
</indexer>
5069
<indexer>
5170
<id>catalog_product_attribute</id>
52-
<set_scheduled>false</set_scheduled>
71+
<set_scheduled>true</set_scheduled>
5372
</indexer>
5473
<indexer>
5574
<id>cataloginventory_stock</id>
56-
<set_scheduled>false</set_scheduled>
75+
<set_scheduled>true</set_scheduled>
5776
</indexer>
5877
<indexer>
5978
<id>catalogrule_rule</id>
60-
<set_scheduled>false</set_scheduled>
79+
<set_scheduled>true</set_scheduled>
6180
</indexer>
6281
<indexer>
6382
<id>catalogrule_product</id>
64-
<set_scheduled>false</set_scheduled>
83+
<set_scheduled>true</set_scheduled>
6584
</indexer>
6685
<indexer>
6786
<id>catalogsearch_fulltext</id>
68-
<set_scheduled>false</set_scheduled>
87+
<set_scheduled>true</set_scheduled>
6988
</indexer>
7089
</indexers>
71-
<xi:include href="../../config/searchTerms.xml" />
72-
<xi:include href="../../config/searchConfig.xml" />
90+
<xi:include href="../../config/searchTermsLarge.xml" />
7391
<xi:include href="../../config/attributeSets.xml" />
92+
<xi:include href="../../config/searchConfig.xml" />
93+
<xi:include href="../../config/customerConfig.xml" />
94+
<xi:include href="../../config/description.xml" />
95+
<xi:include href="../../config/shortDescription.xml" />
7496
</profile>
7597
</config>
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © 2013-2017 Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<config xmlns:xi="http://www.w3.org/2001/XInclude">
9+
<profile>
10+
<websites>25</websites> <!-- Number of websites to generate -->
11+
<store_groups>25</store_groups> <!--Number of stores-->
12+
<store_views>50</store_views> <!-- Number of store views -->
13+
<assign_entities_to_all_websites>1</assign_entities_to_all_websites> <!-- Whether to assign all products per each website -->
14+
<simple_products>4000</simple_products> <!-- Simple products count -->
15+
<configurable_products> <!-- Configurable product -->
16+
<config>
17+
<attributes>1</attributes>
18+
<options>24</options>
19+
<sku>Configurable Product %s</sku>
20+
<products>800</products>
21+
</config>
22+
<config>
23+
<attributes>1</attributes>
24+
<options>200</options>
25+
<sku>Big Configurable Product %s</sku>
26+
<products>79</products>
27+
</config>
28+
</configurable_products>
29+
<categories>100</categories> <!-- Number of categories to generate -->
30+
<categories_nesting_level>3</categories_nesting_level> <!-- Nesting level for categories -->
31+
<customers>2000</customers> <!-- Number of customers to generate -->
32+
33+
<catalog_price_rules>20</catalog_price_rules> <!-- Number of catalog price rules -->
34+
<cart_price_rules>20</cart_price_rules> <!-- Number of cart price rules -->
35+
<cart_price_rules_floor>2</cart_price_rules_floor>
36+
37+
<product_attribute_sets>100</product_attribute_sets> <!-- Number of product attribute sets -->
38+
<product_attribute_sets_attributes>50</product_attribute_sets_attributes> <!-- Number of attributes per set -->
39+
<product_attribute_sets_attributes_values>2</product_attribute_sets_attributes_values> <!-- Number of values per attribute -->
40+
41+
<order_quotes_enable>true</order_quotes_enable>
42+
<order_simple_product_count_from>2</order_simple_product_count_from>
43+
<order_simple_product_count_to>2</order_simple_product_count_to>
44+
<orders>50000</orders> <!-- Orders count -->
45+
46+
<tax_rates_file>tax_rates.csv</tax_rates_file> <!-- Tax rates file in fixtures directory-->
47+
48+
<configs> <!-- Config variables and values for change -->
49+
<config>
50+
<path>admin/security/use_form_key</path>
51+
<scope>default</scope>
52+
<scopeId>0</scopeId>
53+
<value>0</value>
54+
</config>
55+
<config>
56+
<path>carriers/flatrate/active</path>
57+
<scope>default</scope>
58+
<scopeId>0</scopeId>
59+
<value>1</value>
60+
</config>
61+
</configs>
62+
<indexers> <!-- Indexer mode value (true - Update by Schedule, false - Update on Save) -->
63+
<indexer>
64+
<id>catalog_category_product</id>
65+
<set_scheduled>true</set_scheduled>
66+
</indexer>
67+
<indexer>
68+
<id>catalog_product_category</id>
69+
<set_scheduled>true</set_scheduled>
70+
</indexer>
71+
<indexer>
72+
<id>catalog_product_price</id>
73+
<set_scheduled>true</set_scheduled>
74+
</indexer>
75+
<indexer>
76+
<id>catalog_product_attribute</id>
77+
<set_scheduled>true</set_scheduled>
78+
</indexer>
79+
<indexer>
80+
<id>cataloginventory_stock</id>
81+
<set_scheduled>true</set_scheduled>
82+
</indexer>
83+
<indexer>
84+
<id>catalogrule_rule</id>
85+
<set_scheduled>true</set_scheduled>
86+
</indexer>
87+
<indexer>
88+
<id>catalogrule_product</id>
89+
<set_scheduled>true</set_scheduled>
90+
</indexer>
91+
<indexer>
92+
<id>catalogsearch_fulltext</id>
93+
<set_scheduled>true</set_scheduled>
94+
</indexer>
95+
</indexers>
96+
<xi:include href="../../config/searchTermsLarge.xml" />
97+
<xi:include href="../../config/attributeSets.xml" />
98+
<xi:include href="../../config/searchConfig.xml" />
99+
<xi:include href="../../config/customerConfig.xml" />
100+
<xi:include href="../../config/description.xml" />
101+
<xi:include href="../../config/shortDescription.xml" />
102+
</profile>
103+
</config>

0 commit comments

Comments
 (0)