LaveanLavean MemberComments: 30 Received thanks: 2 Member since: February 2018

Hallo allerseits, 

wir nutzen eine Schnittstelle zischen ERP und Shopware auf der Admin API basierend. 

Uns fällt auf, dass die Datensynchronisation ab einer gewissen Datenmenge anfängt zu lahmen. So ca. ab 3000 Datensätzen. Wir hätten allerdings 100x mal zu übertragen. 

Wir sind auf Fehlersuche und würden gerne wissen ob wir Shopware ausschließen können. Gibt es andere Leute hier die das gleiche Verhalten feststellen können? Dass die Datensynchronisation quasi mit jedem übertragenen Datensatz ab einer bestimmten Größe langsamer wird? 

Könnte es an irgendeinem Caching liegen? 

Answers

  • MrAleMrAle MemberComments: 203 Received thanks: 48 Member since: April 2019

    Welche Schnittstelle, was eigens programmiertes?

     

    Gruß

  • chapter2chapter2 MemberComments: 8 Received thanks: 1 Member since: May 2013

    Grüß dich,

    die Performanceeinbußen legen nahe, dass die Synchornisierung zumindest teilweise über Datenbank-Spalten läuft, auf denen standardmäßig kein Index liegt.
    Etwas mehr Infos bitte.

     

     

  • CompusoftCompusoft MemberComments: 9 Received thanks: 0 Member since: May 2011

    Hallo Community,
    in oberem Hilferuf geht es wahrscheinlich um die von uns entwickelte Schnittstelle https://www.shopconnectflex.de für Shopware 6.
    Wir verwenden hier die Admin API um Artikel und Kategorien etc. mit einer ERP Software 1:1 zu synchronisieren.
    Technisch klappt das alles reibungslos nur kämpfen wir mit der Geschwindigkeit.

    Wir konnten über Zeitmessungen nun folgendes messen:
    Anlegen eines Kategorie-Dummys: 
    {"active":false,"id":"74bebe00000049519050020000004721","name":"SHOPCONNECTFLEX6_DUMMY","parentId":"74bebe00000049519050020000004693","visible":false}
    --> Bis hier eine Antwort kommt dauert es 1028 ms

    Ich gehe davon aus, dass es deswegen so lange dauert, weil Shopware hier die internen Berechnungen mit Level und Childcount etc. durchführt.

    Nun füllen wir den Dummy mit Echtdaten:
    {"active":true,"type":"page","cmsPageId":"4082c19dba5e44dda04c788a40248cf6","visible":true,"afterCategoryId":"74bebe00000049519050020000004720","parentId":"74bebe00000049519050020000004693","displayNestedProducts":true}
    --> Bis hier eine Antwort kommt dauert es 744 ms
    Mag sein, dass man diese beiden Schritte zusammenlegen könnte - unter 1 Sekunde kommt man aber nicht.

    Jetzt wurde auch in der Tabelle category_translation ein Datensatz durch Shopware angelegt, den wir anpassen:
    {"name":"KATEGORIEBEZEICHNUNG"}
    Ausser dem Namen passen wir nichts an - aber das dauert für jede einzelne Sprache dann nochmals: 736ms

    Je mehr Artikelkategorien angelegt wurden - je länger dauert der obige Prozess. Bei nur rund 3000 Kategorien sind wir schon bei 1 Sekunde Antwortzeit - dann leider mit jeder weiteren Kategorie erheblich steigernd.
    Bei 5000 Kategorien annähernd bei 3 Sekunden usw.

    Meine Fragen daher:
    Kann das jemand nachvollziehen - Anlegen einer Kategorie mit 2 Sprachen dauert insgesamt rund 3 Sekunden ?
    Gibt es - ausser an der Hardware die Geschwindigkeit zu erhöhen Lösungen, wie man schneller eine Antwort auf einen API Befehl bekommen kann?
    Die Befehle für das Grundgerüst inkl. Daten kann man evtl. kombinieren - gibt es auch Möglichkeiten alle Sprachen in einem API Befehl zu senden?
    Ich habe dazu nichts gefunden - die Sprache steht ja im Header drin...

    Ähnliches Problem, dass es lange dauert ergibt sich bei Artikeln, wobei es da keine Geschwindigkeitsunterschiede gibt, ob wir nun den 1. oder den 10.000 Artikel im Shop anlegen. Jeder Artikel selbst dauert 2 Sekunden für die Erstanlage... Leider viel zu lange.

    Die SyncAPI kann aus verschiedenen Gründen hier nicht eingesetzt werden.

    Danke für alle Hinweise.
     

  • euroxideuroxid MemberComments: 15 Received thanks: 3 edited November 2020 Member since: January 2016

    Hallo @Compusoft‍, 

    die ersten Ansätze wären, das Slow Query Log prüfen und den xDebug Profiler anwerfen, und per jMeter entsprechend Last auf die Flaschenhälse geben. Danach weiß man exakt, welcher Codeblock in welcher Situation die Schnittstelle ausbremst.

    Falls Interesse besteht, ich bin auf diese Fragen spezialisiert und zähle Fussball-Erstlegisten zu meinen Kunden, da deren Ticketshops in einer Stunde ein ganzes Stadion mit 60.000 durchnummerierten Plätzen ausverkaufen mussten.

    Viele Grüße

     

  • euroxideuroxid MemberComments: 15 Received thanks: 3 edited November 2020 Member since: January 2016

    Jetzt habe ich doch mal nachgemessen. 2.000 Kategorien in der VM auf dem Laptop. Wenn ich alle update, dauert das mit entsprechender Logik rund 30 Sekunden. Ohne die Anpassung habe ich den Durchlauf nach zwei Stunden abgebrochen. Leute, Shopware ist schon nicht verkehrt, zumindest was die Möglichkeiten angeht. :-)

     

Sign In or Register to comment.