Import .CSV sehr langsam trotz ausreichender Ressourcen

Servus,

ich habe bereits die suche verwendet und keine passende Antwort zu meiner aktuellen problematik gefunden.

erstmal die Basics zum Shop und Server:
Shopware 6.7.7.1 (Selbst gehostet)
Admin-Worker aktiv (mit asynchroner Verarbeitung)
8gb ram für Shopware fest zugesichert
265000 Artikel im Sortiment
DB für shopware ~35gb groß

Server läuft auf Ubuntu 24.04.4 LTS
32gb Ram
272gb Speicher
12 x QEMU Virtual CPU version 2.5+ (Xeon Silver aktuellste generation)
Maria DB 11.4

Folgende Werte werden beim Import befüllt geliefert:
cover.media.translations.DEFAULT.alt
cover.media.translations.DEFAULT.title
cover.media.url
cover.media.id
tax.taxRate
tax.name
id
productNumber
price.DEFAULT.gross
translations.DEFAULT.name
price.DEFAULT._net
tax.id
stock
categories
manufacturer.translated
active
deliveryTime.translated
minPurchase
purchaseSteps
maxPurchase
releaseDate
shippingFree
markAsTopseller
translations.DEFAULT.keywords
referenceUnit
translations.DEFAULT.packUnit
unitId
translations.DEFAULT.metaTitle
weight
purchaseprices.DEFAULT._net
translations.DEFAULT.description
media
ean
translations.de-DE.customFields.migration_Migrationshopware56-66_product_attr7

kurz gesagt: der import wurde am 10.2.2026 gestartet und hat stand jetzt 150650 Artikel importiert. Da ich aber täglich neue Bestände erhalte, muss ich dies auch irgendwie so beschleunigen können, dass der Import in 24h fertig wird.
Der Server ist im durchschnitt zu 20% ausgelastet, Workload und SSD haben ebenfalls deutlich luft nach oben.

vielleicht hat wer eine idee, was man noch machen kann, damit die Verarbeitung deutlich schneller funktioniert :grin:

Mach den Admin worker aus und lass 4 Worker im Hintergrund laufen, dann sollte das deutlich schneller gehen.

1 „Gefällt mir“

Moin,

ergänzend dazu noch:
Du kannst auch extra worker dann nur für den Import laufen lassen indem du einzelne tasks auslagerst in eigene Transporte.

Aber alleine den Admin worker auszustellen und mit supervisor abarbeiten zu lassen die Queue sollte einen enormen Effekt haben.

Weitere Ergänzung: mit 35gb Datenbank könnte der ram erhöht werden für eine bessere Performance. Oder eventuell einen eigenen dB Server nutzen.

Grüße
Matthias

1 „Gefällt mir“

Ich habe jetzt 4 worker aktiv laufen. in einer stunde kann ich mehr sagen, ob das was gebracht hat. Die Warteschlange ist jetzt zumindest grundsätzlich leer.
die Auslastung ist jetzt nicht merklich angestiegen. gibt es eine empfehlung welche buffergröße ich dem worker zuweisen kann? aktuell hat jeder 512mb erhalten

Moin @IIVII,

generell würde ich auch immer empfehlen mit 512mb zu beginnen. Sollte dies nicht reichen, dann hast du entsprechende errors in den Logs und musst schauen, woran es liegt und entweder den Prozess optimieren oder doch das Limit anheben. Das hängt immer sehr vom Setup ab.

Grüße
Matthias

2 „Gefällt mir“

Was ist der Hintergrund des Imports? Passiert das regelmäßig oder ist das Teil der Migration beispielsweise von Shopware 5?

Bei solchen Datenmengen würde ich über die API gehen. Hier kann man dann auch mit Zeitstempel arbeiten und nur das Delta importieren.

Bei solchen Sachen kannst du nochmehr und nochmehr (schnellere) Hardware draufwerfen und es wird nicht besser. CSV ist für solchen Datenmengen einfach nicht ideal.

2 „Gefällt mir“

Nur mal so als Anmerkung:

Während meines SW-Migrations-Marathon mussten wir feststellen (Zusammen mit dem Shopware-Support) das MariaDB für große SW6-Datenbanken nicht geeignet ist. MySQL 8.4 ist wesentlich schneller.

Desweiteren kann der RAM noch so groß, nutzt alles nichts wenn die Datenbank für Shopware nicht optimiert ist.

1 „Gefällt mir“

über den import werden bestandsinformationen aktualisiert, sowie bildupdates. diese informationen aktualisieren wir auf allen marktpätzen und online-shops täglich

ich habe jetzt auch mal ein update auf redis angefangen um auch dort mehr performance zu bekommen. die 4 worker sind in der aktuellen variante leider nicht so schnell, wie gehofft, was mit der änderung auf redis wohl besser funktionieren soll

Da Bestandsupdates schneller gehen dürfte (und häufiger passieren sollte), würde ich mal probieren das in einem separaten CSV Import machen.

1 „Gefällt mir“

das stimmt. allerdings habe ich grade 8000 neue artikel mit bild neu dabei und komme nicht drum herum :sweat_smile: der gedanke war mir auch schon gekommen. nur momentan nicht möglich, bis die neuen artikel mit bild drin sind

Bei so vielen Artikeln und somit Updates würde ich wirklich schauen wie die Verbindung ordentlich aufgebaut wird, wie angesprochen über API.

Du sprichst auch von Markplätzen: sind diese an Shopware angebunden? Habt ihr ein ERP oder Middleware für Marktplätze?

Vielleicht kannst du dein komplettes Setup hier mal beschreiben?

1 „Gefällt mir“

die anderen marktplätze sind über die ERPp angebunden. shopware selbst hat aktuell 2 onlineshops enthalten, wobei es dort auch noch einstellungsprobleme gibt, die ich aber erst danach angehen würde.
über eine api können wir auch hochladen, vermutlich muss die api dafür dann noch geschrieben werden. grundsätzlich werden alle bestandsdaten als .csv oder .xlsx bereitgestellt, sofern diese keine direkte api haben.

ich lese mir mal die dokumentation zur api durch. momentan hat das update auf redis leider den core beschädigt. sobald der shop wieder läuft, wird das angegangen (:

Genau: entweder Shopware direkt an das ERP anbinden (per API, vielleicht gibts auch einen fertigen Konnektor dafür) oder per Middleware also ERP > Middleware > Shop und auch Middleware an den Marktplatz anbinden.

Wenn du ein ERP hast, was für den Handel ideal ist, hat der Anbieter diese Anforderung schon mehrfach gehört: diese können dann sicherlich sagen, was ideal ist, bzw. wie das andere Kunden des ERPs machen.

Dann kannst du auch wieder einen Server für den Onlineshop mit nur 4-8 Kerne nutzen und 16 GB RAM :slight_smile:

1 „Gefällt mir“

Moin @IIVII

was genau machst du denn alles über Redis? Würde dir dann empfehlen, die Admin Worker auch mit Supervisor/Systemd abarbeiten zu lassen. Also keine „normalen“ Cronjobs.

Grüße
Matthias

1 „Gefällt mir“

Guten Morgen,

ich habe jetzt auf den Systemd umgestellt und das mal laufen lassen. der import läuft seit dem 06.03. 11:16 und hat stand jetzt erst 51400 Artikel importiert. Ich werde das nun über die API angehen müssen. Bin gespannt, wie gut das Funktioniert :smiley:

hier aber schon mal meine andere Frage: ich habe in Shopware einen zweiten Shop, welcher eine andere Domain hat. Leider bekomme ich in den Kontakt angaben die Mailaddresse aus Shop 1 angezeigt. ich war soweit in Shopware selbst alle mir bekannten möglichkeiten durchgegangen in der ich die Mailaddresse trennen kann/muss. Aber ich blieb bisher ohne erfolg. Hat wer zufällig eine idee oder muss ich das in der Datenbank selbst abändern?

Edit: jetzt steht die API. Es funktioniert alles korrekt und auch deutlich schneller. da der aufbau der kategorien zwischen shopware 5 und 6 geändert wurden, musste ich die exporte bei mir noch ein wenig anpassen und über die zeit dann die alten relikte entfernen.
vielen Dank @raymond-de mit dem tipp auf api.
aktuell läuft das erstmal als script, wird dann aber wohl in einen kleinen server (.exe) gewandelt um einstellungen und weitere kleinigkeiten per klick definieren zu können (:

ich hatte anfangs 7 artikel in 10 sekunden, das konnte ich mit 5 verbindungen schon mal auf 22 Artikel anheben und teste jetzt mal die serverlimits.
grundsätzlich habe ich das Script modular, falls wer auch per API importieren möchte und keine lust hat sich das aufzubauen.

soll ich für die Problematik mit der Mailaddresse im frontstore im zweiten shop einen weiteren thread aufmachen, oder kann das hier mit brainstorming ggf. aufgelöst werden? :smiley:

Moin @IIVII ,

kannst du per Screenshot mal die konkrete Stelle benennen die du meinst mit der email?

Grüße
Matthias

1 „Gefällt mir“

Hi Matthias,

ubten un footer hast du links die Kontaktinformationen. shop 1 hat die korrekten Informationen im footer, shop 2 hat die Informationen von shop 1 angezeigt.

https://tectree.de (shop 1)

https://tecwerk.shop (shop 2 / ich weiß, sibd Grad keine Artikelbilder :grimacing:)

Moin @IIVII ,

das änderst du in den Textbausteinen

footer.serviceHotline

Grüße
Matthias

Hi Matthias,

steht drin, ich habe das sogar von den Textbausteinen getrennt und es wird nicht übernommen. selbst im Verkaufskanal habe ich dann De-de Kopie gesetzt