Offen Timeout

masternr1

Aktives Mitglied
3. März 2011
49
0
Hallo,

ich habe das Problem das der aller erste Abgleich Wawi= Shop ohne Probleme funktioniert. Ich habe zur Zeit ca. um die 45.000 Artikel im Angebot. Wenn ein Shop-Abgleich gestartet wird, kommt es zu einer Fehlermeldung:

Fehler:
Exception: Timeout für Vorgang überschritten
Exception: Timeout für Vorgang überschritten

Response: <Empty>

Meine Vermutung ist das das "Timeout" an der Artikelmenge liegen könnte. Hat jemand Erfahrung wie viele Artikel der Connector/Wawi verarbeiten kann?
 

daniel.jtl

Moderator
12. März 2014
1.277
28
AW: Timeout

Der Connector kann beliebig viele Daten verarbeiten, die Grenze setzt lediglich die Hardware und Konfiguration deines Webspace.
Wenn der Server wie in deinem Fall anscheinend mit der Menge überlastet ist, sollte als erstes versucht werden in den Connector-Einstellungen die Paketgröße zu reduzieren.
 

DonFurio

Aktives Mitglied
14. Juni 2015
10
0
AW: Timeout

Ich arbeite auch an diesem Problem, deswegen schließe ich mich hier einmal an.

Der Fehler kommt dann zustande, wenn bereits einiges an Artikeln importiert wurde. Die "Product.statistic" Anfrage dauert durch den Vergleich der Products-Tabelle und der jtl_connector_link Tabelle etwa 10-15 Minuten je nach Datenbankauslastung. In dieser Zeit scheint Wawi aber bereits die nächsten "Product.statistic" Anfrage zu senden.
An den entsprechenden Stellen im Rpc Log sieht man, dass sich die IDs bei Product.statistic Anfragen und Antworten unterscheiden. Log Ausschnitt (etwas aufgeräumt):

Code:
[2016-01-06 00:50:01] rpc.INFO: RequestPacket: {"method":"core.connector.auth","params":"{\"token\":\"xxx\"}","jtlrpc":"2.0","id":"44de6b74feda483494d589a8d2455012"} 
[2016-01-06 00:50:01] rpc.INFO: Response{"result":{"sessionId":"xxx","lifetime":7200},"error":null,"jtlrpc":"2.0","id":"44de6b74feda483494d589a8d2455012"}
[2016-01-06 00:50:01] rpc.INFO: RequestPacket: {"method":"Product.statistic","params":"{\"limit\":0,\"filters\":[]}","jtlrpc":"2.0","id":"87b24ab0524b402386c358f46e3fd94f"} 
[2016-01-06 00:54:03] rpc.INFO: RequestPacket: {"method":"core.connector.auth","params":"{\"token\":\"xxx\"}","jtlrpc":"2.0","id":"38581af5a52d4452924aec17a3dcd38a"} 
[2016-01-06 00:54:03] rpc.INFO: Response{"result":{"sessionId":"xxx","lifetime":7200},"error":null,"jtlrpc":"2.0","id":"38581af5a52d4452924aec17a3dcd38a"} 
[2016-01-06 00:54:03] rpc.INFO: RequestPacket: {"method":"Product.statistic","params":"{\"limit\":0,\"filters\":[]}","jtlrpc":"2.0","id":"442252b9f5794999ab64681874575e2b"}
[2016-01-06 00:56:06] rpc.INFO: Response{"result":{"available":27135,"controllerName":"product"},"error":null,"jtlrpc":"2.0","id":"d90837e750ab4a0ca3d9b4bed1597727"} 
[2016-01-06 00:58:05] rpc.INFO: RequestPacket: {"method":"core.connector.auth","params":"{\"token\":\"xxx\"}","jtlrpc":"2.0","id":"24a5c207be1548038def39bdc386e546"} 
[2016-01-06 00:58:06] rpc.INFO: Response{"result":{"sessionId":"xxx","lifetime":7200},"error":null,"jtlrpc":"2.0","id":"24a5c207be1548038def39bdc386e546"} 
[2016-01-06 00:58:06] rpc.INFO: RequestPacket: {"method":"Product.statistic","params":"{\"limit\":0,\"filters\":[]}","jtlrpc":"2.0","id":"1c3d15f6eff44d62a47fbb623d5b67b8"} 
[2016-01-06 01:01:21] rpc.INFO: Response{"result":{"available":27135,"controllerName":"product"},"error":null,"jtlrpc":"2.0","id":"c9447f8c31724004adec3c911c904fe9"} 
[2016-01-06 01:02:10] rpc.INFO: RequestPacket: {"method":"core.connector.auth","params":"{\"token\":\"xxx\"}","jtlrpc":"2.0","id":"21d8057707314a849852cd99f957379d"} 
[2016-01-06 01:02:10] rpc.INFO: Response{"result":{"sessionId":"xxx","lifetime":7200},"error":null,"jtlrpc":"2.0","id":"21d8057707314a849852cd99f957379d"} 
[2016-01-06 01:02:10] rpc.INFO: RequestPacket: {"method":"Product.statistic","params":"{\"limit\":0,\"filters\":[]}","jtlrpc":"2.0","id":"9895c3e8792d404a9e06c915ceef0a6e"} 
[2016-01-06 01:05:25] rpc.INFO: Response{"result":{"available":27135,"controllerName":"product"},"error":null,"jtlrpc":"2.0","id":"845f5ab744d640afafdf401e5a16e112"}
Die Antworten mit den zugehörigen IDs kommen dann erst später und es kommen weiterhin core. connector.auth und Product.statistic Anfragen. Das geht so lange bis es irgendwann zu oben beschriebenen Timeout kommt.

Der entsprechende Query
Code:
SELECT p.* FROM products p
LEFT JOIN jtl_connector_link l ON p.products_id = l.endpointId AND l.type = 64
WHERE l.hostId IS NULL

dauert auch Manuell eingegeben über 10 Minuten.
 

daniel.jtl

Moderator
12. März 2014
1.277
28
AW: Timeout

Dazu dann folgendes:

1.
Wenn deine Datenbank für einen einfachen Join derart lange benötigt, dann stimmt hier ganz sicher schon etwas nicht mit den Indizes oder allgemein der Datenbank-Konfiguration.
Selbst bei extrem vielen Daten, müsste eine solche Anfrage problemlos funktionieren.

2.
Wenn der von dir beschriebene Query auftaucht, dann kannst du nicht die letzte Version des Connectors benutzen sondern eine die bereits seit langem veraltet ist.
Der aktuelle Connector ermittelt die Anzahl der benötigten Produkte mit dieser Abfrage:

SELECT count(p.products_id) as count FROM products p LEFT JOIN jtl_connector_link l ON p.products_id = l.endpointId AND l.type = 64 WHERE l.hostId IS NULL LIMIT 1
 

DonFurio

Aktives Mitglied
14. Juni 2015
10
0
AW: Timeout

Nach dem update des Connectors ging der Product.statistic Query schneller aber noch lange nicht schnell genug. Da scheint es bei uns ein Problem mit LEFT JOINs zu geben.

Der folgende Query behebt das Problem:

SELECT p1.* FROM products p1 where p1.products_id NOT IN
(SELECT p.products_id FROM products p INNER JOIN jtl_connector_link l
WHERE p.products_id=l.endpointId AND l.type=64)
 

daniel.jtl

Moderator
12. März 2014
1.277
28
AW: Timeout

Also wenn der Query bei dir nicht funktioniert, kann das aber nur an manuellen Modifikationen deiner Datenbank oder irgendwelcher Addons oder Hacks im Shop liegen.
Wenn es für dich funktioniert ist es ja ok, aber rein technisch gesehen kann die Abfrage von dir natürlich eigentlich unmöglich schneller sein als die originale.
Auch ist zu beachten dass du bei derartigen Änderungen des Cores bei jedem Update nun manuell deine Änderungen nachziehen musst. Also für eine Lösung halte ich das daher nicht, da sollte eher an der Quelle debugged werden, wieso der ursprüngliche Query bei dir nicht funktioniert...
 
Ähnliche Themen

Ähnliche Themen