Fehler bei Bestellungen verwalten


#1

Hi,

Wenn ich im admin backend auf
Bestellungen Verwalten -> Bestellungen
klicke liefert er kein Ergebniss mehr

In der Datenbank sehe ich den folgenden query laufen

select count(*) from  `oxorder`
       LEFT JOIN `oxv_oxpayments_de` AS `payments` on `payments`.oxid=oxorder.oxpaymenttype
           LEFT JOIN `oxv_oxpayments_de` AS pluspayments ON pluspayments.oxid = oxorder.oxpaymenttype
           LEFT JOIN payppaypalpluspayment ON payppaypalpluspayment.OXORDERID = oxorder.OXID
           LEFT JOIN payppaypalpluspui ON payppaypalpluspui.OXPAYMENTID = payppaypalpluspayment.OXPAYMENTID
        where 1  and ( oxorder.oxfolder = 'ORDERFOLDER_NEW' )

der verschwindet nach ner Zeit und dann kommt der hier mit dem Status copying to temp table

select `oxorder`.`oxid`, `oxorder`.`oxshopid`, `oxorder`.`oxuserid`, `oxorder`.`oxorderdate`, `oxorder`.`oxordernr`, `oxorder`.`oxbillcompany`, `oxorder`.`oxbillemail`, `oxorder`.`oxbillfname`, `oxorder`.`oxbilllname`, `oxorder`.`oxbillstreet`, `oxorder`.`oxbillstreetnr`, `oxorder`.`oxbilladdinfo`, `oxorder`.`oxbillustid`, `oxorder`.`oxbillcity`, `oxorder`.`oxbillcountryid`, `oxorder`.`oxbillstateid`, `oxorder`.`oxbillzip`, `oxorder`.`oxbillfon`, `oxorder`.`oxbillfax`, `oxorder`.`oxbillsal`, `oxorder`.`oxdelcompany`, `oxorder`.`oxdelfname`, `oxorder`.`oxdellname`, `oxorder`.`oxdelstreet`, `oxorder`.`oxdelstreetnr`, `oxorder`.`oxdeladdinfo`, `oxorder`.`oxdelcity`, `oxorder`.`oxdelcountryid`, `oxorder`.`oxdelstateid`, `oxorder`.`oxdelzip`, `oxorder`.`oxdelfon`, `oxorder`.`oxdelfax`, `oxorder`.`oxdelsal`, `oxorder`.`oxpaymentid`, `oxorder`.`oxpaymenttype`, `oxorder`.`oxtotalnetsum`, `oxorder`.`oxtotalbrutsum`, `oxorder`.`oxtotalordersum`, `oxorder`.`oxartvat1`, `oxorder`.`oxartvatprice1`, `oxorder`.`oxartvat2`, `oxorder`.`oxartvatprice2`, `oxorder`.`oxdelcost`, `oxorder`.`oxdelvat`, `oxorder`.`oxpaycost`, `oxorder`.`oxpayvat`, `oxorder`.`oxwrapcost`, `oxorder`.`oxwrapvat`, `oxorder`.`oxgiftcardcost`, `oxorder`.`oxgiftcardvat`, `oxorder`.`oxcardid`, `oxorder`.`oxcardtext`, `oxorder`.`oxdiscount`, `oxorder`.`oxexport`, `oxorder`.`oxbillnr`, `oxorder`.`oxbilldate`, `oxorder`.`oxtrackcode`, `oxorder`.`oxsenddate`, `oxorder`.`oxremark`, `oxorder`.`oxvoucherdiscount`, `oxorder`.`oxcurrency`, `oxorder`.`oxcurrate`, `oxorder`.`oxfolder`, `oxorder`.`oxtransid`, `oxorder`.`oxpayid`, `oxorder`.`oxxid`, `oxorder`.`oxpaid`, `oxorder`.`oxstorno`, `oxorder`.`oxip`, `oxorder`.`oxtransstatus`, `oxorder`.`oxlang`, `oxorder`.`oxinvoicenr`, `oxorder`.`oxdeltype`, `oxorder`.`oxtsprotectid`, `oxorder`.`oxtsprotectcosts`, `oxorder`.`oxtimestamp`, `oxorder`.`oxisnettomode`, `oxorder`.`ddtransfered`, `oxorder`.`az_3dcheckunavailable`, `oxorder`.`ddcouponsend`, `oxorder`.`ggtransferdate`, `oxorder`.`gg_referer`, `oxorder`.`ggebayorderid`, `oxorder`.`ggebayextendedid`, `oxorder`.`ggebaystatus`, `oxorder`.`ggebayusername`, `oxorder`.`ggrakutenordernr`, `oxorder`.`ggrakutenclientid`, `oxorder`.`ggrakutenstatus`, `oxorder`.`ggyategoordernr`, `oxorder`.`ggrealordernr`, `oxorder`.`ggrealclientid`, `oxorder`.`ggrealstatus`, `oxorder`.`ggallyouneedordernr`, `oxorder`.`ggallyouneedclientid`, `oxorder`.`ggallyouneedstatus`, `oxorder`.`ggpaypalid`, `oxorder`.`ggpaypaldate`, `oxorder`.`ggpaypalstate`, `oxorder`.`ggpaypalmode`, `oxorder`.`ggpaypalmail`, `oxorder`.`ggpaypalname`, `oxorder`.`ggpaypalrefundid`, `oxorder`.`ggpaypalrefunddate`, `oxorder`.`ggpaypalrefundstate`, `oxorder`.`ggpaypalrefundmode`, `oxorder`.`ggpaypalrefundmail`, `oxorder`.`ggpaypalrefundname` , pluspayments.oxdesc AS payments_oxdesc, payppaypalpluspui.oxid AS payppaypalpluspui_oxid , `payments`.`oxdesc` as `paymentname` from `oxorder`
       LEFT JOIN `oxv_oxpayments_de` AS `payments` on `payments`.oxid=oxorder.oxpaymenttype
           LEFT JOIN `oxv_oxpayments_de` AS pluspayments ON pluspayments.oxid = oxorder.oxpaymenttype
           LEFT JOIN payppaypalpluspayment ON payppaypalpluspayment.OXORDERID = oxorder.OXID
           LEFT JOIN payppaypalpluspui ON payppaypalpluspui.OXPAYMENTID = payppaypalpluspayment.OXPAYMENTID
        where 1  and ( oxorder.oxfolder = 'ORDERFOLDER_NEW' ) order by `oxorder`.`oxorderdate` desc  LIMIT 9 OFFSET 0

der Steht dann ein paar minuten im mySQL

Nach ca 5 min bekomme ich im Backend folgenden Fehler

# Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request *[GET /admin/index.php](https://www.my.com/admin/index.php)* .

Reason: **Error reading from remote server**

Der query selbst lÀuft aber weiter. ein paar min. spÀter fliege ich dann aus dem admin backend raus und der query scheint dann gestoppt zu sein.


#2

wurde der Shop dort, wo er jetzt ist, ursprĂŒnglich installiert, oder wurde die Datenbank ggf. irgendwoher kopiert / importiert?


#3

ja die wurde mal kopiert(nicht bie mir), das ist aber schon wieder ein paar monate her, vor der Einschaltung des OEPaypal moduls ging dieser Bereich im Backend noch


#4

Unter UmstÀnden fehlen dort Indizies in der Datenbank, was sich durch die joins mit Paypal Tabellen sehr bemerkbar macht


#5

indizes sind gesetzt. Problem scheint dieser join zu sein.

select count(*) from  `oxorder`

           LEFT JOIN payppaypalpluspayment ON payppaypalpluspayment.OXORDERID = oxorder.OXID

#6

Verstehe ich nicht ganz! Habe mit unserem hoster alles mögliche angepasst. buffer sizes, timouts hoch gesetzt, sogar den ram erhöht.
Der braucht immer noch extremst lange und das backend timed immer noch aus


#7

Ich habe jetzt folgendes ausgefĂŒhrt.
Damit ist das Problem nicht behoben, aber das webinterface timed nicht mehr aus, braucht aber halt immer noch eine Minute beim aufrufen und jedem weiteren blÀttern


Index gesetzt

oxorder.OXPAYMENTTYPE
oxorder.oxfolder
payppaypalpluspui.OXPAYMENTID
payppaypalpluspayment.OXPAYMENTID;

Query ausgefĂŒhrt:

`UPDATE oxorder
SET oxfolder = 'ORDERFOLDER_FINISHED'
WHERE OXORDERDATE <= DATE_ADD(NOW(), INTERVAL -60 DAY)
order by oxorderdate DESC`

#8

Hi,

mal ne doofe Frage, du sagt das verschieben von X Bestellungen in einen anderen oxfolder hat das Backend beschleunigt. Jetzt Frage ich mich a) wieviele waren das und b) wieviele sind noch ĂŒbrig.

Und was fĂŒr ein Hosting bzw. welche MySQL Version verwendest du?

Manchmal sind es auch die einfachen Fragen die die Erleuchtung bringen :wink:

Gruss Stefan


#9

das sollte ja glaube ich nicht relvant sein
es waren 150k
es sind noch ĂŒberig ~20k

Das Problem hat vorher nicht bestanden, erst mit der Aktivierung des oe\paypal modules
da der Join auf payppaypalpluspayment, welcher so probleme bereitet zu dem modul payp\paypalplus gehört, vermute ich mal, dass die Beiden module sich nicht mögen, bzw oe\paypal irgend was ĂŒberschreibt/ĂŒberlagert. wobei das natĂŒrlich keine auswirkungen auf die ausfĂŒhrzeit haben sollte.

Server version: 10.1.26-MariaDB-0+deb9u1 - Debian 9.1

Zudem geht der erste join, welcher ĂŒber die Tabelle oxv_oxpayments_de geht ja auch ĂŒber den selben Datensatz und der ist nach einer sekunde fertig worauf hingegen der select count(*) join ĂŒber payppaypalpluspayment 200sek und nach der index hinzufĂŒgung 177sek braucht.

Habe hier noch ein wenig ausfĂŒhrlicher die AusfĂŒhrzeiten und die Explains aufgelisted.
Die Explain dieses queries kommt mir auch komisch vor. das jeweils vor und nach der hinzufĂŒgung der indexes


#10

Hi,

ich habe mir die Infos auf SO angesehen, das hat mich an ein Ă€hnliches Problem erinnert was wir mal bei einem Hoster hatten auch mit MariaDB. Dort ist der Buffer fĂŒr InnoDB falsch konfiguriert gewesen, was dazu fĂŒhrte das alle SQLÂŽs die ĂŒber mehrere Tabellen gingen sehr langsam waren. Eventuell hilft dir das weiter.

Gruss Stefan


#11

sind die Indices fĂŒr die joins alle vorhanden? Und sind die views aktualisiert worden?


#12

ja, die habe ich noch einmal alle extra neu gesetzt. Siehe
lange brauchen tut nur der hier

LEFT JOIN payppaypalpluspayment ON payppaypalpluspayment.OXORDERID = oxorder.OXID


#13

meine Vermutung war dass (min.) der Index UNIQUE KEY OXORDERID (OXORDERID) in der Tabelle payppaypalpluspayment nicht vorhanden ist


#14

in einer DB bei uns dauert die Abfrage 0,3 sec. Allerdings sind dort nur ca 20k Bestellungen und aktuell nur ca. 30 neue (‘OXORDERFOLDER_NEW’)
Wenn bei Dir aber in 60 Tagen 20K Bestellungen eingehen liegt hier ein grundsÀtzliches Problem vor. Und dann können die queries schon lange dauern.


#15

das ding ist ja, das ich vor 2 wochen die Selben Bestellungszahlen hatte. Und da ging das noch genau so schnell wie bei dir


#16

werden die Bestellungen mit einem WaWi/ERP abgearbeitet?
wird der Bestellungstatus in die Oxid-DB zurĂŒckgeschrieben?


#17

Die werden von einer Eigenentwicklung an eine WaWi weitergeleitet. Wenn du mit Bestellstatus das Feld oxfolder meinst, so wird das nachtrÀglich nach erfolgreicher Abholung nicht mehr geupdated.


#18

ja - oxfolder meinte ich
der Bestellungstatus sollte auf jeden Fall zB mit einem cronjob zurĂŒckgeschrieben werden -
ua sieht das auch fĂŒr den Kunden auf der Kontoseite besser aus 

Und da die Bestellungen ja nach wenigen Tagen nicht mehr den Status OXORDERFOLDER_NEW haben lÀuft die query auch wieder deutlich schneller


#19

AbĂ€ndern der “Column” “collations” von “latin_1_general_ci” zu “utf8_general_ci” hat die AusfĂŒhrzeit von 175 sec. auf 0.1208 sec. runter gebracht.