Hallo,
wir sehen seit ca. 2 Monaten eine hohe CPU-Auslastung auf unserem JTL- Shop Server (Linux, Ubuntu 22 LTS, 32 GB RAM, 6 Cores). Dort laufen neen dem Shop auch einige Wordpress-Instanzen.
Seit den angesprochenen 2 Monaten bekommen wir vom Server Monitoring mehrfach am Tag Alarme, dass die CPU zu 100% ausgelastet ist, der System-Monitor-Graph bestätigt das, eben so "top" und "htop". Die Auslastung geht gem. '(h)top' auf Kosten der mariadb. Daraufhin haben wir mit der SQL Workbench nachgesehen und alle Top-Auslatungsqueries kommen vom JTL Shop. Der Spitzenreiter mit Abstand ist diese Query hier:
SELECT MAX ( `ssMerkmal` . `fMax` ) AS `fMax` , MIN ( `ssMerkmal` . `fMin` ) AS `fMin` FROM ( SELECT `ROUND` ( `LEAST` ( ( `tpreisdetail` . `fVKNetto` * ? ) * ( ( ? - `GREATEST` ( `IFNULL` ( `tartikelkategorierabatt` . `fRabatt` , ? ) , ?, ... ) ) / ? ) , `IFNULL` ( `tsonderpreise` . `fNettoPreis` , ( `tpreisdetail` . `fVKNetto` * ? ) ) ) * ( ( ? + ? ) / ? ) , ? ) AS `fMax` , `ROUND` ( `LEAST` ( ( `tpreisdetail` . `fVKNetto` * ? ) * ( ( ? - `GREATEST` ( `IFNULL` ( `tartikelkategorierabatt` . `fRabatt` , ? ) , ?, ... ) ) / ? ) , `IFNULL` ( `tsonderpreise` . `fNettoPreis` , ( `tpreisdetail` . `fVKNetto` * ? ) ) ) * ( ( ? + ? ) / ? ) , ? ) AS `fMin` FROM `tartikel` JOIN ( SELECT DISTINCTROW `kArtikel` FROM `tartikelmerkmal` WHERE `kMerkmalWert` = ? ) AS `tmerkmaljoin` ON `tmerkmaljoin` . `kArtikel` = `tartikel` . `kArtikel` JOIN `tartikelmerkmal` ON `tartikel` . `kArtikel` = `tartikelmerkmal` . `kArtikel` JOIN ( `tpreis` JOIN `tpreisdetail` ON `tpreisdetail` . `kPreis` = `tpreis` . `kPreis` AND `tpreisdetail` . `nAnzahlAb` = ? )
Sie wird von allen Queries am häufigste ausgeführ und dauert immer am längsten.
Kann jemand etwas dazu sagen? Ist das für die Statistiken, die ich im Shop-Admin-Bereich sehe?
Gruß
AWo
wir sehen seit ca. 2 Monaten eine hohe CPU-Auslastung auf unserem JTL- Shop Server (Linux, Ubuntu 22 LTS, 32 GB RAM, 6 Cores). Dort laufen neen dem Shop auch einige Wordpress-Instanzen.
Seit den angesprochenen 2 Monaten bekommen wir vom Server Monitoring mehrfach am Tag Alarme, dass die CPU zu 100% ausgelastet ist, der System-Monitor-Graph bestätigt das, eben so "top" und "htop". Die Auslastung geht gem. '(h)top' auf Kosten der mariadb. Daraufhin haben wir mit der SQL Workbench nachgesehen und alle Top-Auslatungsqueries kommen vom JTL Shop. Der Spitzenreiter mit Abstand ist diese Query hier:
SELECT MAX ( `ssMerkmal` . `fMax` ) AS `fMax` , MIN ( `ssMerkmal` . `fMin` ) AS `fMin` FROM ( SELECT `ROUND` ( `LEAST` ( ( `tpreisdetail` . `fVKNetto` * ? ) * ( ( ? - `GREATEST` ( `IFNULL` ( `tartikelkategorierabatt` . `fRabatt` , ? ) , ?, ... ) ) / ? ) , `IFNULL` ( `tsonderpreise` . `fNettoPreis` , ( `tpreisdetail` . `fVKNetto` * ? ) ) ) * ( ( ? + ? ) / ? ) , ? ) AS `fMax` , `ROUND` ( `LEAST` ( ( `tpreisdetail` . `fVKNetto` * ? ) * ( ( ? - `GREATEST` ( `IFNULL` ( `tartikelkategorierabatt` . `fRabatt` , ? ) , ?, ... ) ) / ? ) , `IFNULL` ( `tsonderpreise` . `fNettoPreis` , ( `tpreisdetail` . `fVKNetto` * ? ) ) ) * ( ( ? + ? ) / ? ) , ? ) AS `fMin` FROM `tartikel` JOIN ( SELECT DISTINCTROW `kArtikel` FROM `tartikelmerkmal` WHERE `kMerkmalWert` = ? ) AS `tmerkmaljoin` ON `tmerkmaljoin` . `kArtikel` = `tartikel` . `kArtikel` JOIN `tartikelmerkmal` ON `tartikel` . `kArtikel` = `tartikelmerkmal` . `kArtikel` JOIN ( `tpreis` JOIN `tpreisdetail` ON `tpreisdetail` . `kPreis` = `tpreis` . `kPreis` AND `tpreisdetail` . `nAnzahlAb` = ? )
Sie wird von allen Queries am häufigste ausgeführ und dauert immer am längsten.
Kann jemand etwas dazu sagen? Ist das für die Statistiken, die ich im Shop-Admin-Bereich sehe?
Gruß
AWo