Мы разработали некоторый magento-проект с большой инвентарной записью и всегда сталкиваемся с проблемой индексации, которую мы пробовали в интернете для решения повседневных проблем с индексацией, таких как усечение плоских таблиц и повторное индексирование с помощью CLI, установив cron для индексация, но это наша повседневная головная боль, сталкивающаяся с проблемой индексации.
Мы ищем постоянное решение этой проблемы, в то время как мы работаем над проектами, есть разные сценарии, такие как ежедневное обновление продуктов или ежедневный импорт продуктов из какого-либо другого канала.
Любой, кто имеет некоторые передовые практики с этим или некоторые обходные пути, пожалуйста, поделитесь ими, что будет высоко ценится.
Ответы:
Важно понимать, какие показатели медленные и почему
Сложность каталога и, в конечном счете, архитектура хранилища будут определять время, которое потребуется для переиндексации в сочетании с базовой инфраструктурой.
Если у вас есть 50 000 товаров и 10 просмотров магазина, вы можете гарантировать, что несколько миллионов строк
catalog_url_rewrite
потребуют времени для обработки.Если у вас есть 100 продуктов, но 5000 атрибутов, вы можете гарантировать
catalog_attributes
илиcatalog_product_flat
таблица будет возраст , чтобы восстановить или упасть плашмя на его лицеЕсли у вас есть 1000 товаров, но 500 доступных для поиска атрибутов, то
catalog_fulltext_search
снова потребуется время, чтобы завершитьРешение каждой проблемы, с которой вы сталкиваетесь, не в одном размере, а в том, чтобы правильно спроектировать ваш магазин; наличие правильной инфраструктуры для ее поддержки и использование переиндексации частоты / стратегии, которая поддерживает как актуальность контента, так и производительность.
Есть также случай оценки того, требуются ли определенные индексы. Использование плоского продукта / категории не всегда делает все магазины быстрее; мы видели, что это делает магазины намного медленнее. Таким образом, вы можете обнаружить, что после тестирования производительности до / после - это даже не вопрос.
источник
ТЛ; др
Там нет решения серебряной пули. Я предлагаю несколько обходных путей,
Sonassi_Fastsearchindex
но это специально для поиска по каталогу.Возможно, отключение обновлений индекса при сохранении - планирование выполнения в одночасье - даст некоторое облегчение? В сочетании с добавлением дополнительного кэширования - memcached, Redis, APC - и полного кеша страниц, такого как Varnish (если вы используете CE), вы можете начать работу. Если вы планируете использовать Varnish, посмотрите
Nexcess_Turpentine
на github для быстрого старта.Больше информации
Вопросы индексации, в частности, catalog_url_rewrites, хорошо известны и задокументированы в сообществе. Magento справился с этим в версии Enterprise, потому что это клиенты, которые пострадали больше всего. Многие клиенты EE имеют более 10 тыс. Продуктов и несколько магазинов, веб-сайты и т. Д.
Однако, если у вас большой каталог и большое количество атрибутов, вы можете оказаться в том положении, в котором индексация займет длительный период времени, в частности, catalog_url_rewrite, product_flat, - в этом случае я не советую исправлять время выполнения индекса длина , а скорее разгрузить часть обработки , чтобы коробка тратить процессорное время индексации , а не публикуют .
Вопросы, которые нужно задать себе:
Для этой конкретной проблемы не существует решения «серебряной пули» - как поставщик решений вы должны помочь своему клиенту принять решение, которое будет наилучшим образом улучшать продажи и бизнес при сохранении низких накладных расходов.
альтернативы
Переложить поиск по каталогу и многоуровневую навигацию в Solr.
Масштабировать по горизонтали. Добавьте больше серверов Apache / nginx. Больше серверов = больше параллельной пропускной способности. Это не 1: 1. Nexcess имеет отличный технический документ по производительности и конфигурации Apache здесь: http://www.nexcess.net/magento-best-practices-whitepaper
И, если вы решили пойти с лаком - помните:
источник
В большинстве крупных интернет-магазинов Magento было очень сложно заставить работать управление индексами бэкэнда Magento. У меня была эта проблема часто. Выполнение сценария оболочки все время разработчиком часто является беспокойным. Обычно я решаю эту проблему навсегда, как это.
Я создаю новую копию shell / indexer.php> shell / myindexer.php
Настройте shell / myindexer.php примерно на строку 154
к
и добавьте эту проверку вокруг строки 166
до
И затем я добавляю новый скрипт оболочки в cpanel cron, чтобы запускать каждые 5 минут
Поскольку приведенный выше сценарий оболочки запускается каждые 5 минут и выполняет переиндексацию только тех процессов, которые требуют переиндексации, он снижает риск большой нагрузки на процессор сервера, а также весь процесс переиндексации очень быстрый. Если ни один процесс не требует переиндексации, он просто не запустит процесс переиндексации. Кроме того, не забудьте установить режим переиндексации на «Обновить при сохранении» на странице управления индексами. Если вы не знаете, вы можете получить эту опцию в Действия> Изменить режим индекса рядом с кнопкой Отправить.
источник
Было бы проще сказать, если бы вы могли предоставить больше данных (размер инвентаря, посетители, машина), но есть возможность:
Sonassi_Fastsearchindex
расширение для индекса поиска по каталогу. Хотя он просто индексирует заголовок, описание и sku (думаю, я заметил), он прекрасно работает и сокращает время индексатора каталога поиска.Это работает на Magento CE 1.7.0.2; все еще боль, хотя;)
источник
используя Dnd_Patchindexurl, я смог сократить время переиндексации catalog_url_rewrite почти до 70%
Я думаю, что это хорошее решение, чтобы исключить отключенные продукты или невидимые продукты, чтобы их URL создавались даром!
После:
Я установил его на 1.9.1.1 и работает очень хорошо!
Может быть установлен через Connect слишком http://www.magentocommerce.com/magento-connect/catalog/product/view/id/15074/s/dn-d-patch-index-url-1364/category/12863/
источник
Обновление до EE 1.13. Индексаторы были значительно улучшены в этой версии.
источник