Dieses Problem tritt beim Upgrade von EE 1.13.0.2 auf 1.14.1.0 auf. Wir erleben dies bei der Massenaktualisierung von Produktattributen und Lagerbeständen in Cronjobs. In 1.13 dauern die Jobs ~ 3 Sekunden bzw. ~ 90 Sekunden. In 1.14 sind es eher ~ 10 Minuten und ich möchte nicht wissen, wie lange.
Es gibt einen EE-Patch PATCH_SUPEE-4945_EE_1.14.0.1_v2.sh
zum langsamen Speichern des Produkts. Sie können es beim Support anfordern.
Ein weiterer Tipp, den ich gefunden habe, war, nur die Zeilen zu aktualisieren, die noch nicht auf 0 gesetzt sind (natürlich ändern Sie die Kerndatei nur vorübergehend, um zu testen, ob sie Auswirkungen auf Sie hat):
diff --git a/app/code/core/Enterprise/CatalogSearch/Model/Index/Action/Fulltext/Refresh.php b/app/code/core/Enterprise/CatalogSearch/Model/Index/Action/Fulltext/Refresh.php
index c6273a1..95e6d4c 100644
--- a/app/code/core/Enterprise/CatalogSearch/Model/Index/Action/Fulltext/Refresh.php
+++ b/app/code/core/Enterprise/CatalogSearch/Model/Index/Action/Fulltext/Refresh.php
@@ -668,7 +668,7 @@ class Enterprise_CatalogSearch_Model_Index_Action_Fulltext_Refresh
protected function _resetSearchResults()
{
$adapter = $this->_getWriteAdapter();
- $adapter->update($this->_getTable('catalogsearch/search_query'), array('is_processed' => 0));
+ $adapter->update($this->_getTable('catalogsearch/search_query'), array('is_processed' => 0), array('is_processed != 0'));
$adapter->delete($this->_getTable('catalogsearch/result'));
$this->_app->dispatchEvent('enterprise_catalogsearch_reset_search_result', array());
diff --git a/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php b/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php
index ee8b1c3..1d89146 100755
--- a/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php
+++ b/app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php
@@ -299,7 +299,7 @@ class Mage_CatalogSearch_Model_Resource_Fulltext extends Mage_Core_Model_Resourc
public function resetSearchResults()
{
$adapter = $this->_getWriteAdapter();
- $adapter->update($this->getTable('catalogsearch/search_query'), array('is_processed' => 0));
+ $adapter->update($this->getTable('catalogsearch/search_query'), array('is_processed' => 0), array('is_processed != 0'));
$adapter->delete($this->getTable('catalogsearch/result'));
Mage::dispatchEvent('catalogsearch_reset_search_result');
Und zuletzt gab es eine Empfehlung, der is_processed
Spalte einen Index hinzuzufügen :
ALTER TABLE `database`.`catalogsearch_query` ADD INDEX `IDX_CATALOGSEARCH_QUERY_IS_PROCESSED` (`is_processed`) COMMENT '';
Ich habe sie alle ausprobiert und obwohl sie geringfügige Leistungsverbesserungen brachten, brachte mich keiner von ihnen in die Nähe der Leistung von EE 1.13.
Eine einfache Lösung (an der Oberfläche) wäre das Zurücksetzen
if (!$this->_isFulltextOn()) {
return $this;
}
zu Beginn execute()
für diese Klassen:
- Enterprise_CatalogSearch_Model_Index_Action_Fulltext_Refresh
- Enterprise_CatalogSearch_Model_Index_Action_Fulltext_Refresh_Changelog
- Enterprise_CatalogSearch_Model_Index_Action_Fulltext_Refresh_Row
Wenn ich das mache, wird der folgende Code nicht ausgeführt, da Solr für die Verwendung konfiguriert ist. Da das Kernteam diese Methode für 1.14 abgelehnt hat, ist sie allerdings hässlich und ich werde versuchen, mich um jeden Preis davon fernzuhalten.
Ich untersuche dies erst seit gestern, also hoffe ich, dass ich eine richtige Lösung finden kann.
Update 09.02.2015
Ich fand heraus , durch eine xdebug Profil Dump zu schaffen , dass die Kommunikation zwischen Magento und Solr die meiste Zeit in Anspruch nimmt System > Configuration > Advanced > Index Management > Index Options > Catalog Search Index
eingestellt ist Update on Save
. Wenn Sie den Katalogsuchindex so einstellen, Update when scheduled
dass die Geschwindigkeit erheblich verbessert wird.
Update 03.03.2015
In der Zwischenzeit erklärte der Enterprise-Support, warum dies $this->_isFulltextOn()
veraltet ist:
Wir haben $ this -> _ isFulltextOn () aus der Ausführungsmethode entfernt, weil wir den aktuellen mysql_fulltext-Indexer überarbeitet haben, um die tatsächliche Indexierungsarbeit zu kapseln und den SOLR-Index für die Katalogsuche anzupassen, um das neue Mview-basierte Indexermodell zu verwenden.
Das Enterprise_CatalogSearch-Modul hat ein neues Indexermodell implementiert, das Changelog für die teilweise Neuindizierung verwendet. Wenn derzeit SOLR als Katalogsuchmaschine verwendet wird, greift der Indexer catalogogsearch_fulltext auf das alte Indexermodell zurück. Wir verwenden das neue Indexermodell im Enterprise_CatalogSearch-Modul, wenn SOLR als Katalogsuchmaschine festgelegt ist.
Wenn der Händler beim Speichern von Produkten die Volltextindizierung überspringen möchte, bitten Sie ihn, den Indexmodus zu ändern, um ihn planmäßig zu aktualisieren.
Die offizielle Lösung besteht also darin, den Indexmodus auf zu ändern Update when scheduled
. Wir verwenden es jetzt seit einigen Wochen ohne Probleme. Wenn Ihr Cron jede Minute läuft, tritt nur eine geringe Verzögerung auf, bis die Suche aktualisiert wird.