Hallo,
wir haben starke performance Probleme in Sachen Indexierung und eventuell hat jemand einen Rat.
Unser Setup:
Hauptserver:
Hetzner cloud Vserver 32vCPU (dedizierte CPU-Ressourcen), 128GB RAM
- Shopware 6.3.4.1
- NGINX 1.14.1
- PHP-FPM 7.4.14
- MariaDB 10.3.17
Elasticsearch:
Hetzner cloud Vserver 16vCPU (dedizierte CPU-Ressourcen), 64GB RAM
- NGINX 1.14.1
- Elasticsearch 7.10.2
Produktanzahl im Shop: ~2Mio
Zur Frage:
Was super läuft ist der normale Betrieb, das Suchen im frontend etc geht dank elasticsearch super flott.
Importieren der Artikel über die Sync API ist auch super flott - alles spitze bisher bei mehreren Mio Artikeln.
Probleme bereitet das indexieren Shopwareseitig. Das dauert ewig (pro Bulk!) egal ob über die CLI direkt oder ausgelagert als queue.
Variante 1: Indexing über die CLI:
bin/console dal:refresh:index
Das rennt ein paar Stunden, was kein thema ist - allerdings füllt sich der RAM stück für stück und ist irgendwann dicht:
Memory limit ist hier testweise deaktiviert um zu sehen wie weit der Spaß geht: bis er voll ist. Wir starten bei ca 20Gb Auslastung des Speichers und nach Stunden sind wir beim Limit von 128GB angekommen durch das Indexing command.
Bisher ist das durch unserem RAM gedeckelt worden aber bei noch mehr Produkten wirds eng.
Was kann sein, das das Command so viel RAM verbraucht bzw den RAM immer weiter füllt?
Variante 2 queue indexing:
Wenn die Artikel über die Sync API mit queue indexing importiert wurden klappt das so weit und wir haben zig tausende messages im table die abgearbeitet werden:
bin/console messenger:consume
Wenn ich das mal per Hand mitverfolge (-vv option) dann rattert er minuten für einen Bulk Shopwareseitig und zum Schluss das Indexieren in der Elastic und refreshen des Indexex geht in sekunden.
MariaDB wurde auf dem hauptserver auf dem auch Shopware läuft (siehe Setup oben) genug Speicher gegeben (ca. 80GB) wie hier beschrieben:
[mysqld]
key_buffer_size = 10M
innodb_buffer_pool_size = 80000M
und FPM hat 512mb für Shopware bereitgestellt.
Was könnte ich am Shopwareseitigen indexierungs-part noch optimieren?
Eventuell hat ja jemand einen Tip. Mehrere Mio produkte rattern so Wochen oder Monate.
Danke im Vorraus!