Neu Langsamen kategorie upload Fixen ...

Mavy

Aktives Mitglied
16. August 2017
3
2
Hallo,

Ich hatte seit langem Probleme Kategorien neu hoch zu laden, der Prozess wurde ab 700 kategorien langsamer und wenn es dann an die 1000 ging stand der Upload quasi komplett still.
Es war mir immer deswegen ein Graus kategorien neu hochzuladen. Ich habe in meiner verzweiflung extra den server gewechselt um mehr IO performance für den Upload zu haben - erfolglos.
Trotz fähiger Hardware versagt der Upload von mehr als 1000 Kategorien auf einmal.. der Server frisst sich einfach fest und ist dann aufgrund völliger IO überlastung trotz cache aud auslagerung
in den Arbeitsspeicher und Optimierungen an allen Komponenten am Ende seiner Ressourcen.

8 Kerne mit 64GB ram, SSD, Ubuntu 18.04, NGINX 1.14.0, PHP7.2-FPM und MySQL5.7 - und keine chance.

Ich habe dann herausgefunden das die Tabelle "jtl_connector_category_level" offenbar alle paar sekunden neu befüllt und dann wieder geleert wird ..
Weil sich diese allerdings als normale innoDB- Tabelle auf der Festplatte befindet und alle 2 sekunden etwa auf 4000 einträge anwächst dann wieder geleert wird schreit die SSD nach einiger Zeit keuchend nach seiner Mama.

Ich habe nun die Tabelle "jtl_connector_category_level" vom Typ "InnoDB" zum typen "memory" geändert und habe dadurch scheinbar sämtliche Probleme gelöst ..
statt eines Uploads der auch mal 6 stunden dauerte und regelmäßig wegen timeouts abbrach ist der ganze vorgang nach der umstellung in einem rutsch jetzt innerhalb von 15 minuten abgeschlossen gewesen.
(~4800 kategorien die ich vorher immer nur in schritten von höchstens 200 stück zuverlässig neu hochladen konnte)



ich habe aufgrund der Tabellen constraints diese einfach komplett gelöscht und neu erstellt:
(duch PHPmyAdmin exportiert und nur ENGINE=innoDB durch ENGINE=memory ersetzt)

SQL:
-- phpMyAdmin SQL Dump
-- version 4.8.5
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Erstellungszeit: 24. Jun 2019 um 15:46
-- Server-Version: 5.7.26-0ubuntu0.18.04.1
-- PHP-Version: 7.2.19-1+ubuntu18.04.1+deb.sury.org+1

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;


-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `jtl_connector_category_level`
--

CREATE TABLE `jtl_connector_category_level` (
  `category_id` int(11) UNSIGNED NOT NULL,
  `level` int(10) UNSIGNED NOT NULL
) ENGINE=memory DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Indizes der exportierten Tabellen
--

--
-- Indizes für die Tabelle `jtl_connector_category_level`
--
ALTER TABLE `jtl_connector_category_level`
  ADD PRIMARY KEY (`category_id`);

--
-- Constraints der exportierten Tabellen
--

--
-- Constraints der Tabelle `jtl_connector_category_level`
--
ALTER TABLE `jtl_connector_category_level`
  ADD CONSTRAINT `jtl_connector_category_level` FOREIGN KEY (`category_id`) REFERENCES `s_categories` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Wawi-Version : 1.4.29.1
Shopware-Version : 5.5.10
Connector-Version : 2.2.1.4



ich habe bisher keine negativen auswirkungen feststellen können .. evtl kann jemand der den Connector betreut etwas dazu sagen ?


Mit besten Grüßen
- Markus
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: McAvity und Immanuel

Immanuel

Gesperrter Benutzer
24. August 2016
1.542
329
Hallo Markus, danke für deine ausführliche Erläuterung. Der Kategorie Upload ist durch das ständige Erstellen des Baumes ab einer bestimmten Kategorie Menge tatsächlich ein Flaschenhals des Connectors.
 

McAvity

Sehr aktives Mitglied
7. September 2016
595
146
@Immanuel

Wäre das dann nicht eine Idee, die in das produktive Plugin übernommen werden könnte? Oder spricht da was gegen?

MfG

McAvity
 

Immanuel

Gesperrter Benutzer
24. August 2016
1.542
329
Hallo @McAvity,

das könnte problematisch bei Servern mit wenig Arbeitsspeicher werden. Wir wollen den Kategorieupload dahingehend überarbeiten, dass diese Tabelle gar nicht mehr benötigt wird. Im nächsten Schritt aber werden erstmal alle Kategorien ordentlich übersetzt, sodass ein Kategorie Mapping gar nicht mehr nötig ist. Siehe dazu das Ticket CO-363 in unserem Issue Tracker. Wir testen gerade noch. Das Connector Release wird voraussichtlich kommende Woche erscheinen.
 

Mavy

Aktives Mitglied
16. August 2017
3
2
Diese Tabelle ist nie größer als 1 MB geworden, zudem habe ich meine max_heap_table_size auch nicht angehoben (standard ist 16MB)
(rauszufinden per sqlQry: SELECT @@max_heap_table_size )

Mit besten Grüßen
- Markus
 

Mavy

Aktives Mitglied
16. August 2017
3
2
villeicht ist es möglich das als Option bei der installation des Plugins auszuwählen,
so müsste nur an der Installationsroutine etwas geändert werden.
(einfacher haken: "Nutze ENGINE=MEMORY" für Temporäre Tabellen - ja/nein [x] )
 

Ähnliche Themen