Советы по ускорению обработки больших коллекций продуктов в бэкэнде


Я имею дело с большой базой данных (примерно 70 тыс. продуктов), чтобы помочь мне более эффективно управлять своими продуктами, необходимо было изменить панель администратора, чтобы увеличить коллекцию продуктов. В моем случае 5000 продуктов и 10 000 продуктов для представления выпадающего списка в разделе Управление продуктами.

Проблема в том, что "Пожалуйста, подождите" появляется в течение периода от 5 до 15 минут до загрузки продуктов, а иногда они не загружаются в все.

Мой магазин работает на выделенном сервере [двухъядерный четырехъядерный процессор Xeon, память 12 ГБ], поэтому нет причин, по которым он не может справиться с этим, поэтому я пытаюсь отследить, где я могу настроить некоторые настройки, чтобы сделать его более отзывчивым.

Внешний интерфейс работает молниеносно, внутренний - быстро, за исключением большой коллекции продуктов.

Mysql был настроен, используя кэш Redis и APC в качестве серверной части, не зная, что еще можно сделать, чтобы ускорить решение этой конкретной проблемы. Я уверен, что эти с большими базами данных это может принести пользу.

Какие настройки можно изменить, чтобы повысить эффективность обработки больших коллекций продуктов в серверной части Magento?

Author: Fabian Schmengler, 2014-10-14

4 answers

Для такого объема данных в одной коллекции вы на самом деле никогда не добьетесь того, чтобы это было так быстро, как вы, вероятно, хотите, - независимо от того, на каком оборудовании вы работаете. Вы не только извлекаете огромное количество данных из базы данных за один вызов, вы также обрабатываете эти данные с помощью PHP, чтобы отобразить их в сетке, которая всегда будет медленной.

При том, что загрузка сетки занимает 5-15 минут, безусловно, имеет смысл придерживаться поведения по умолчанию?

 3
Author: Jonathan Hussey, 2014-10-14 19:27:05

Как сказал Джонатан Хасси, именно так быстро или медленно ваша страница будет загружаться с 5K-10K продуктами одновременно в сетке продуктов администратора.

Чтобы получить больше информации, взгляните на Mage_Adminhtml_Block_Catalog_Product_Grid::_prepareCollection(). На первый взгляд он уже выглядит довольно оптимизированным. Если вы сможете еще больше оптимизировать его, вы могли бы увидеть некоторые улучшения, но я сомневаюсь, что это будет намного быстрее.

 1
Author: musicliftsme, 2014-10-14 20:17:39

У меня другой подход к этой проблеме.

Я импортирую продукты в magento, а затем переопределяю классы magento для продукта и т. Д. Чтобы они извлекали сведения о продукте / описание (и многоуровневую навигацию) непосредственно из внешней базы данных.

 1
Author: Conrad Jones, 2015-02-24 17:06:15

Мне кажется, что весь этот вопрос основан на недоразумении.

Манипулировать большим количеством продуктов с ограничением 200 на страницу просто не вариант

Если вы отфильтруете сетку и "Выберите все", она выберет не только видимые записи, но и все записи, соответствующие фильтру.

Пример из реального мира:

screenshot

Примечание: Ни один продавец, которого я знаю, не будет использовать серверную часть Magento для управления 70 тыс. продуктов потому что это ужасно неэффективно (как вы заметили). PIM, который может экспортировать в Magento, будет лучшим решением в долгосрочной перспективе.

 0
Author: Fabian Schmengler, 2015-02-24 17:17:42