Gelöst Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

bork

Sehr aktives Mitglied
26. Januar 2007
852
104
Hallo,

ich hatte die Problematik schonmal angesprochen: Für die Synchronisation wird ja die Tabelle jtl_connector_link durchsucht und mit den Kunden-, Artikel- und Bestelltabellen gejoint. Die ersten Artikelabgleiche gingen richtig fix, aber als ich dann die jtl_connector_link Tabelle mit Blinddaten für Kunden und Bestellungen bespielt hatte, ging das System in die Knie. Die jtl_connector_link ist mit über 3 MB jetzt schon größer als unsere Kundentabelle. 30.000 Einträge sind da schon drin. Kann das der Grund dafür sein, dass das Synchronisationsstatusfenster in der JTL Wawi erstmal ziemlich exakt 2 Minuten lang komplett einfriert (keine Rückmeldung) bevor die Synchronisation startet? Ich brauche z.B. um 2 Kunden und 2 Bestellungen zu importieren erst die obligatorischen 2 Minuten Wartezeit in denen nichts passiert und dann nochmal 4 Minuten für den Import selbst. Kann das sein, dass diese 2 Minuten Vorlaufzeit die Zeit für das Durcharbeiten der jtl_wawi_connector Tabelle ist, um zu ermitteln, welche Daten überhaupt übermittelt werden sollen? Wenn das so ist, graut es mir vor der Situation, wenn die Tabelle mal doppelt so groß wird. Ein JTL Servicepartner hat mir auch von einem Kunden erzählt, der über 200.000 Kunden hat und bei dem der Connector erstmal über eine halbe Stunde Vorbereitungszeit hat, bevor irgendwas importiert wird. Eine Alternative wäre ja, z.B. in der Connector-Installation Mindestwerte festzulegen, also z.B. Bestellnummern unter 15.000 und Kundennummern unter 10.000 ignorieren. Dann könnte man die jtl_connector_link ja schonmal um über 80 % verkleinern.

Wäre hier ein Ansatzpunkt?
https://gitlab.jtl-software.de/jtl-.../Connector/Gambio/Mapper/CustomerOrder.php#L8


LEFT JOIN jtl_connector_link l ON o.orders_id = l.endpointId AND l.type = 4
WHERE l.hostId IS NULL and o.orders_id > [vorkonfigurierte Mindest-Order ID]",
 

fav-hosting.online

Sehr aktives Mitglied
16. Oktober 2012
781
60
Weiterstadt
Firma
FaV-Hosting
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Hi,

wir hatten ein ähnliches Problem bei Magento und konnten dies bei uns auf fehlende Indexe zurückführen.
Hast du mal die Abfragen die solange dauern mit "EXPLAIN" davor ausgeführt und geprüft ob diese einen Index verwenden bzw. wie lange deren Ausführung dauert?
 

bork

Sehr aktives Mitglied
26. Januar 2007
852
104
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Hallo Mike,

danke für den Tipp!
Also diese Abfrage hier: https://gitlab.jtl-software.de/jtl-...Connector/Gambio/Mapper/CustomerOrder.php#L54

SELECT o . *
FROM orders o
LEFT JOIN jtl_connector_link l ON o.orders_id = l.endpointId
AND l.type =4
WHERE l.hostId IS NULL
LIMIT 0 , 30

dauert schon 55 Sekunden im phpMyAdmin. Explain liefert mir dies:

Unbenannt.jpg

Hast du einen Tipp?
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    23,1 KB · Aufrufe: 30

fav-hosting.online

Sehr aktives Mitglied
16. Oktober 2012
781
60
Weiterstadt
Firma
FaV-Hosting
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Hi,
ich würde versuchen in der Tabelle jtl_connector_link einen Index für die Spalten type und hostID anzulegen.

Code:
ALTER TABLE `gambio`.`jtl_connector_link` ADD INDEX GambioTest (`type`, `hostId`);

Danach dann die Abfrage nochmal ausführen und prüfen ob in der Spalte "Key" der verwendete Index GambioTest oder immer noch NULL steht.
 

daniel.jtl

Moderator
12. März 2014
1.277
28
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

ich würde versuchen in der Tabelle jtl_connector_link einen Index für die Spalten type und hostID anzulegen.
Wenn der Connector auf vorgesehenem und von uns beschriebenen Weg installiert wurde, dann müssen auch alle Felder einen Index haben.
Ein manuelles abändern der Tabellen dürfte nicht notwendig sein...
 

bork

Sehr aktives Mitglied
26. Januar 2007
852
104
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Habe die jtl_connector_link erstmalig regulär über das Installations-Interface installiert, dann möglicherweise zum Reset nur Tabelle geleert, nicht gelöscht. Gab es denn vielleicht seit Dezember 2015 mal eine Installationsversion, bei der die Indices nicht gesetzt wurden? Werde dann mal probieren, die Indices von Hand nachzusetzen. Kaputtmachen kann ich damit nichts, richtig?
 

daniel.jtl

Moderator
12. März 2014
1.277
28
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Nein, solange die Daten selbst drin bleiben kann da nichts kaputt gehen.
Die Indizes sollten auf jeden Fall angelegt sein, sonst kann es wirklich zu massiven Performance-Problemen kommen.
 

fav-hosting.online

Sehr aktives Mitglied
16. Oktober 2012
781
60
Weiterstadt
Firma
FaV-Hosting
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Hi Daniel,

hab mir die Tabellen eben nochmal angeschaut, ich denke der Fehler liegt in einer falsch gestalteten Abfrage.
Wie du auf dem Foto von bork sehen kannst wird bei beiden abgefragten Tabellen keine Index bzw. Schlüssel verwendet was bei größeren Tabellen einfach nicht sein darf.
Auch bei meiner Testinstallation in der alle Indexe korrekt gesetzt sind wurden keine Schlüssel verwendet.
Es sollte die Abfrage "l.hostId IS NULL" durch "l.hostId = 0" ersetzt werden da die Spalte keine Nullwerte zulässt wäre hier die Suche nach 0 und nicht nach NULL korrekt.
Diese Änderung bewirkte schon das Gambio ab jetzt einen Index verwendet und die Abfrage bei mir mit 5000 Datensätzen statt 9,9 nur noch 0,0007 Sekunden dauerte.
 

daniel.jtl

Moderator
12. März 2014
1.277
28
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Es sollte die Abfrage "l.hostId IS NULL" durch "l.hostId = 0" ersetzt werden da die Spalte keine Nullwerte zulässt wäre hier die Suche nach 0 und nicht nach NULL korrekt.
Das ist leider überhaupt nicht korrekt.
Bei einer derart geänderten Abfrage würdest du grundsätzlich überhaupt keine neuen bzw. noch nicht gemappten Datensätze bekommen.
Die hostId ist das Ergebnis eines Joins auf die Mapping-Tabelle. Das IS NULL auf diesem Feld dient also dazu, festzustellen ob überhaupt schon ein Mapping-Eintrag existiert.
Mit einem Vergleich auf "gleich 0" ist es somit unmöglich dass du jemals ein Ergebnis bekommst, weil es diesen Zustand nicht geben kann.
 

bork

Sehr aktives Mitglied
26. Januar 2007
852
104
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Hallo,

habe den Index gesetzt. Dachte erst das hätte viel gebracht auf den ersten Blick, aber jetzt sinds doch wieder 54 Sekunden Laufzeit für die Abfrage im phpMyAdmin. Habe ich was falsch gemacht?

Unbenannt.jpg
 

Anhänge

  • Unbenannt.jpg
    Unbenannt.jpg
    19,9 KB · Aufrufe: 22

daniel.jtl

Moderator
12. März 2014
1.277
28
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Ich sehe da spontan keinen Fehler. Bei der Anzahl an Einträgen ist es aber auch nicht verwunderlich dass die Abfrage eine Weile dauert.
Wie sind denn überhaupt deine Server-Spezifikationen?
Des weiteren ist es merkwürdig dass deine Link-Tabelle anscheinend mehr Einträge enthält als es tatsächliche Bestellungen gibt?
 

bork

Sehr aktives Mitglied
26. Januar 2007
852
104
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Habe gerade mal die Zahl der Einträge manuell verglichen: 13844 Bestellungen in der Link-Tabelle, 13841 in der orders-Tabelle. Das ist in der Tat seltsam. Dann muss ich mal in der Link-Tabelle alle Einträge mit type 4 löschen, die nicht in der orders Tabelle vorkommen? Doppelte Einträge in der jtl_connector_link und der orders Tabelle gibt es jedenfalls nicht, sagt mir
SELECT endpointID, COUNT(*) c FROM jtl_connector_link where hostId = 4 GROUP BY endpointId HAVING c > 1; und
SELECT orders_id, COUNT(*) c FROM orders GROUP BY orders_id HAVING c > 1;

Ach so, wir löschen ja auch mal Bestellungen vom Admin aus, z.B. fehlgeschlagene/doppelte Paypal-Käufe, abgelehnte Rechnungskauf-Käufe oder Testbestellungen. Daher könnte das kommen, oder?

Server-Spezifikationen: All-Inkl Business-Tarif mit max. 30 Kunden pro Server: Webhosting Tarif ALL-INKL BUSINESS - ALL-INKL.COM Eigentlich ist der recht ruhig, und mit 24,95 EUR / Monat kein Billig-Webspace. Über die Server-Spezifikationen machen die aber keine Aussagen, aber da schon standardmäßig PHP 5.6 läuft, ist er vermutlich noch nicht so alt.

VG
bork
 

daniel.jtl

Moderator
12. März 2014
1.277
28
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Ach so, wir löschen ja auch mal Bestellungen vom Admin aus, z.B. fehlgeschlagene/doppelte Paypal-Käufe, abgelehnte Rechnungskauf-Käufe oder Testbestellungen. Daher könnte das kommen, oder?
Richtig, das wäre auf jeden Fall eine Erklärung. Wenn im Shop-Backend gelöscht wird verbleiben zuvor gezogene Mapping-Einträge natürlich.

All-Inkl Business-Tarif mit max. 30 Kunden pro Server: Webhosting Tarif ALL-INKL BUSINESS - ALL-INKL.COM Eigentlich ist der recht ruhig, und mit 24,95 EUR / Monat kein Billig-Webspace.
Naja, klar, günstiger geht es immer. Aber für 24,95 würde ich persönlich dennoch keinen Shop hosten. Mit "Business" hat das ja nicht viel zu tun...
Aber gut, ist natürlich auch alles eine Frage der Besuchszahlen und des Durchsatzes.

Der initiale Join ist halt leider verhältnismäßig aufwändig und kann bei der Masse an Einträgen nun mal dauern.
Wenn alle Tabellen geprüft wurden ob die Indizes korrekt sind (also auch die Gambio-eigenen), fallen mir da auch eigentlich nur noch 2 Lösungen ein:
1. Schnellerer Server mit mehr Ressourcen
2. Eigentlich die besser Lösung: Aufräumen. Kommt natürlich nur in Frage wenn es überhaupt möglich ist. Sofern man aber zum Beispiel Daten hat die schon einige Jahre alt sind und ggf. nicht mehr akut notwendig sind, könnte man diese mal backuppen und löschen. Das dürfte der Performance einen ordentlichen Schub geben.
 

bork

Sehr aktives Mitglied
26. Januar 2007
852
104
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Danke für die Erklärungen.

Das mit dem Aufräumen ist etwas schwierig: Kundenkonten von älteren Kunden möchten wir nur ungern löschen, und ansonsten bin ich mir unsicher, was die Aufbewahrungspflicht für Geschäftsdokumente betrifft. Ob das auch 10 Jahre oder nur 6 sind bei solchen Daten. Wo würde man denn mit einem Plugin ansetzen, um zu sagen, dass z.B. nur alle orders_ids über 14.000 abgeglichen werden sollen? Hier oder? https://gitlab.jtl-software.de/jtl-.../Connector/Gambio/Mapper/CustomerOrder.php#L8 Das würde auch viel helfen, oder?

Könntet ihr uns ein Angebot für so ein Plugin machen? Dann hätte man für andere Sachen auch ein Original Gambio-Beispiel-Plugin zum besseren Verständnis der Funktionsweise.
 

daniel.jtl

Moderator
12. März 2014
1.277
28
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Das mit dem Aufräumen ist etwas schwierig: Kundenkonten von älteren Kunden möchten wir nur ungern löschen
Die Kundenkonten müsst ihr ja nicht löschen. So wie bisher beschrieben, sind es ja eher die Masse an Bestellungen im System die dazu führen dass der Abgleich langsam ist.
In einem ersten Schritt würde es somit vermutlich reichen, nur die orders zu sichern und aus der Live-Datenbank zu löschen.
Alternativ kann man sich ja auch eine zweite Datenbank mit einer exakten Kopie des bisherigen Bestands machen. Sollte dann tatsächlich ein Kunde nach Jahren zwingend nochmal eine Bestellung im Shop nachgucken müssen, kann man die Daten in wenigen Sekunden wieder zurück kopieren.

Wo würde man denn mit einem Plugin ansetzen, um zu sagen, dass z.B. nur alle orders_ids über 14.000 abgeglichen werden sollen? Hier oder? https://gitlab.jtl-software.de/jtl-s...erOrder.php#L8
Ja, es wäre möglich an dieser Stelle den Query abzuändern um vorab noch eine entsprechende Filterung vorzunehmen.
Allerdings muss man dabei bedenken, dass eigene Änderungen direkt im Connector-Code dann auch bei jedem Update wieder von euch nachgezogen werden müssten.
Der korrekte und dauerhaft zuverlässige Weg ist daher natürlich über das Plugin-System des Connectors.

Könntet ihr uns ein Angebot für so ein Plugin machen? Dann hätte man für andere Sachen auch ein Original Gambio-Beispiel-Plugin zum besseren Verständnis der Funktionsweise.
Ein Beispiel für ein Connector-Plugin ist ja im Gitlab vorhanden: https://gitlab.jtl-software.de/jtlconnector/demo-plugin
Ein Angebot kann ich leider nicht machen, da wir selbst keine einzelnen Auftrags-Arbeiten übernehmen. Individuelle Anpassungen und Erweiterungen machen wir nur im Rahmen einer Professional- oder Enterprise-Subscription.

Da das Thema mit älteren Bestellungen aber schon öfter vorkam, werde ich mir mal überlegen was man da "serienmäßig" machen kann.
Wäre es zu dem Zweck eventuell möglich, dass du mir Zugang zu deiner Shop-DB oder einer Kopie davon einrichten könntest? Da du eine enorme Menge an Daten hast, wäre das eine sehr gute Möglichkeit um zu gucken was man Performance-mäßig machen kann...
 

bork

Sehr aktives Mitglied
26. Januar 2007
852
104
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Ja, da kann ich gerne eine anonymisierte Kopie der Shop-DB vorbereiten und schicke dann die Zugangsdaten. Oder lieber als SQL Dump per FTP?
 

bork

Sehr aktives Mitglied
26. Januar 2007
852
104
AW: Shop-Synchronisation: Fenster friert 2 Minuten lang ein bevor es losgeht

Hallo,

gibts an dieser Front schon was Neues? Zugangsdaten zu einer anonymisierten Shopkopie hatte ich ja geschickt...

VG
bork
 
Ähnliche Themen
Titel Forum Antworten Datum
Seit dem Update meines JTL-Shops auf Version 5.7.1 funktioniert die Verbindung zwischen JTL-Wawi 2.0.4.0 und dem Shop nicht mehr. JTL-Wawi 2.0 1
Neu Shop 5.7.2 - JTL PayPal Checkout legt alles lahm JTL-Shop - Fehler und Bugs 4
Neu IP Adresse einer Kontaktanfrage über den Shop herausfinden Allgemeine Fragen zu JTL-Shop 4
Neu Gibt es in der WaWi-Datenbank einen Zeitstempel, der anzeigt wann ein Kunde sich in einem bestimmten Shop registriert hat? User helfen Usern - Fragen zu JTL-Wawi 3
Beantwortet [Shop 5.7.2 / Wawi 2.0.5] GPSR-Daten werden am Artikel nicht angezeigt trotz korrekter Übertragung und installiertem Plugin Allgemeine Fragen zu JTL-Shop 1
Neu shop steht , brauche Hilfe Allgemeine Fragen zu JTL-Shop 6
Neu DSVGO konform 1000 Kunden in WaWi und Shop löschen! User helfen Usern - Fragen zu JTL-Wawi 4
Neu 500er Fehler im Shop nach aktivierung des Nova Child Templates für JTL-Shop 3
Neu JTL Shop Plugin - BD Automatisierter Widerruf (Von Händler für Händler - Schluss mit Mail-Chaos & Spam-Sorgen!) Plugins für JTL-Shop 0
Neu Rechte-Fehler im J10n Modul und Auswirkung auf base.mo.php in div. Plugins (Shop 5.7.1) JTL-Shop - Fehler und Bugs 0
Neu Welche JTL Shop Plugins oder kleinen Hilfstools würden euch im Alltag wirklich helfen? Plugins für JTL-Shop 0
Beantwortet Shop Abgleich nach Update auf 5.7.2 nicht mehr möglich JTL-Shop - Fehler und Bugs 4
Neu Shop zeigt keine Artikel mehr Fehler 500 Betrieb / Pflege von JTL-Shop 9
Neu Shop 5.7.1 und Downloadmodul Allgemeine Fragen zu JTL-Shop 1
Neu Plugin: JTL Exportformat Google Shopping gibt <g:google_product_category> unter Shop 5.7.1 und Wawi 2.0.4 nicht aus Plugins für JTL-Shop 1
Neu Widerrufsbutton für JTL-Shop 4 Allgemeine Fragen zu JTL-Shop 17
Neu Rabatte aus dem JTL-Shop werden in der Wawi nur als Netto-Preis übernommen, Rabatt % gehen verloren Onlineshop-Anbindung 0
Neu Laut Backend Shop Update für Shop 5.71 - Download nicht zu finden? Betrieb / Pflege von JTL-Shop 3
Neu Kategorie erscheint nicht im Shop Allgemeine Fragen zu JTL-Shop 5
Neu JTL-Shop - Wechsel von Test zum Livebetrieb - was beachten ? Installation / Updates von JTL-Shop 2
Neu Meta Shop seit September 2025: JTL-Lösung für neue Checkout-URL gesucht Allgemeine Fragen zu JTL-Shop 0
Rabatt Coupons in Verbindung mit Staffelpreisen - JTL 1.11.9, JTL Shop JTL-Wawi 1.11 0
Neu Shop-Update auf 5.7.1: Sprachvariablen im Widerrufsformular werden nicht erkannt, obwohl vorhanden?! JTL-Shop - Fehler und Bugs 3
Fehler beim Abgleich mit dem JTL-Shop JTL-Wawi 2.0 12
Neu OnFinds: KI-Suche für JTL-Shop mit fairer Abrechnung nach Artikelanzahl. 30 Tage kostenlos testen Plugins für JTL-Shop 0
Neu Freelancer für JTL-Wawi, Shop & Prozessautomatisierung Dienstleistung, Jobs und Ähnliches 2
Neu JTL Shop 5.7.1 mit Fehlern - versandarten zahlungsarten nicht änderbar, leere weiße Seite JTL-Shop - Fehler und Bugs 5
Neu Massiver jtl-shop-cron aufruf JTL-Shop - Fehler und Bugs 7
Neu Suche Workflow: Erstbestellung Shop auf Rechnung -> Auftrag Zurückhalten JTL-Wawi - Ideen, Lob und Kritik 1
Neu Neues Plugin: Erweiterter Widerrufsbutton für JTL-Shop Plugins für JTL-Shop 9
Neu [Suche 5 Beta-Tester] KI generiert JTL Shop 5 Templates per Beschreibung – kostenlos testen Templates für JTL-Shop 7
Neu Shop gesperrt - Webspace überschritten - Zusatzspace buchen bringt Fehler - Support fühlt sich nicht zuständig Betrieb / Pflege von JTL-Shop 7
Neu Telemetrie-Datenerfassung in JTL-Shop 5.7.0: Bitte um Klarstellung der DSGVO-relevanten Aspekte Allgemeine Fragen zu JTL-Shop 5
Neu GPSR Hersteller werden im Shop nicht angezeigt User helfen Usern - Fragen zu JTL-Wawi 2
Neu Nach Update auf 1.11.9 - alle Shopify Shop nicht mehr connected Shopify-Connector 4
Neu Shop 5.7 update empfhalen Installation / Updates von JTL-Shop 13
Plattformabgleich Shop löschen - Wo ist das in der MySQL DB? JTL-Wawi 2.0 4
Neu Funktioniert Shop 5.7 mit MariaDB 10.5.29? Installation / Updates von JTL-Shop 1
JTL Shop 4 Upgrade auf 5.5.0 --> Fehler 500 Upgrade JTL-Shop4 auf JTL-Shop5 2
JTL Shop 4 Upgrade auf 5.5.0 --> Fehler 404 Upgrade JTL-Shop4 auf JTL-Shop5 11
Neu JTL Shop 5 und Klarna Plugins für JTL-Shop 0
Neu JTL Shop 5.7 - Widerrufsbutton im B2B Templates für JTL-Shop 18
Neu Dropdown jtl shop länge einstellen Allgemeine Fragen zu JTL-Shop 2
JTL-Shop 5.7.0 Widerrufsbutton Einrichtung JTL-Shop5 42
Update auf Shop 5.5.0 von 5.4.1 ist der Shop nicht mehr erreichbar Upgrade JTL-Shop4 auf JTL-Shop5 4
Neu Merkmale Shop an oder Aus Allgemeine Fragen zu JTL-Shop 1
Neu JTL Shop Template Snackys Bildgrößen einstellen Templates für JTL-Shop 1
Neu Kategorie Listenansicht: Shop-Skript berechnet Höhe "falsch" Technische Fragen zu Plugins und Templates 5
Neu JTL-Shop 5.7 - Aktuell 5.7.2 Releaseforum 2
Neu Gratisgeschenke im JTL Shop nicht wirklich nutzerfreundlich. Allgemeine Fragen zu JTL-Shop 4

Ähnliche Themen