1und1 zu hohe Datenbanklast

Hallo,

bei meinem Kunden ( www.hifi-im-hinterhof.de ) läuft seit 2 Wochen die CE von Oxid.
Heute habe ich eine E-Mail von 1und1 erhalten, weil anscheinend die Datenbankbelastung zu hoch sei. Ich soll mich innerhalb von 2 Tagen melden und die Programmierung ändern, andernfalls würden sie die Datenbank sperren oder auf einen langsameren Server verschieben.
Da ich die Programmierung von Oxid wohl kaum ändern kann, müsste ich auf einen eigenen Server wechseln.

Hier noch einige Auszüge der E-Mail:

Wir haben festgestellt das Abfragen Ihres Datenbankbenutzers
xxxxxxxx auf dem Server yyyyyyyyyy zu einer erhöhten
Belastung führen. Es handelt sich hierbei um Abfragen in folgender Form:

/var/log/anna.log:dbo283306720@infong17: 3979 Queries: 3796 Selects, 1
Ins, 20 Upd, 23 Connects
/var/log/anna.log.0:dbo283306720@infong17: 44251 Queries: 42147 Selects,
9 Ins, 549 Upd, 219 Connects
/var/log/anna.log.1.gz:dbo283306720@infong17: 102200 Queries: 96370
Selects, 32 Ins, 1618 Upd, 3 Del, 585 Connects
/var/log/anna.log.2.gz:dbo283306720@infong17: 84273 Queries: 80105
Selects, 18 Ins, 1315 Upd, 402 Connects
/var/log/anna.log.3.gz:dbo283306720@infong17: 93839 Queries: 89197
Selects, 1 Ins, 1289 Upd, 476 Connects
/var/log/anna.log.4.gz:dbo283306720@infong17: 64861 Queries: 62022
Selects, 2 Ins, 695 Upd, 305 Connects
/var/log/anna.log.5.gz:dbo283306720@infong17: 72554 Queries: 69351
Selects, 14 Ins, 869 Upd, 329 Connects
/var/log/anna.log.6.gz:dbo283306720@infong17: 7036 Queries: 6676
Selects, 1 Ins, 113 Upd, 35 Connects

Die obigen Zeilen sind stündlich zu betrachten. Innerhalb einer Stunde
sollten nicht mehr als 1.000 Schreibvorgänge (Inserts, Updates und
Deletes) auf die Datenbank in der Summe erfolgen. Höhere Zahlen gehen
auf Kosten der Performance des Datenbankservers.

Zur Senkung der hohen Zugriffszahlen sollten Sie Sessions nicht mehr per
MySQL speichern und verwalten.

Beispielhafte Schreibzugriffe:

update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘fc0db7e281eb713caaec500b29364ca7’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘2491ddc7fce8370e6c5bb407795c4c2d’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘c8b23972329ad6f6a1b85a11d2793d92’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘c8b674280b8b5a6e9a78541087a50384’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘2491ddc7fce8370e6c5bb407795c4c2d’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘aa71ad1c4c80aa8c9d80e62a6c56179a’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxcategory’ and
oxobjectid = ‘b1ccebf91073940f4595d850f86e584b’ and oxshopid =
‘oxbaseshop’ and oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘aa7bc00b46f772bb01d9dfb09fd1d7d9’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘2491ddc7fce8370e6c5bb407795c4c2d’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘c8b23972329ad6f6a1b85a11d2793d92’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘c8b674280b8b5a6e9a78541087a50384’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘2491ddc7fce8370e6c5bb407795c4c2d’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘aa71ad1c4c80aa8c9d80e62a6c56179a’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxcategory’ and
oxobjectid = ‘b1ccebf91073940f4595d850f86e584b’ and oxshopid =
‘oxbaseshop’ and oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘aa7bc00b46f772bb01d9dfb09fd1d7d9’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘c8b23972329ad6f6a1b85a11d2793d92’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘c8b674280b8b5a6e9a78541087a50384’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘2491ddc7fce8370e6c5bb407795c4c2d’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1
select oxarticles.oxid, oxarticles.oxparentid, oxarticles.oxvarcount,
oxarticles.oxvarstock, oxarticles.oxicon, oxarticles.oxstock,
oxarticles.oxprice, oxarticles.oxvat, oxarticles.oxskipdiscounts,
oxarticles.oxunitquantity, oxarticles.oxshopid, oxarticles.oxinsert,
oxarticles.oxtimestamp, oxarticles.oxactive, oxarticles.oxtemplate,
oxarticles.oxblfixedprice, oxarticles.oxpic1, oxarticles.oxpic2,
oxarticles.oxpic3, oxarticles.oxpic4, oxarticles.oxpic5,
oxarticles.oxpic6, oxarticles.oxpic7, oxarticles.oxpic8,
oxarticles.oxpic9, oxarticles.oxpic10, oxarticles.oxpic11,
oxarticles.oxpic12, oxarticles.oxzoom1, oxarticles.oxzoom2,
oxarticles.oxzoom3, oxarticles.oxzoom4, oxarticles.oxtitle,
oxarticles.oxsearchkeys, oxarticles.oxvendorid,
oxarticles.oxmanufacturerid, oxarticles.oxvarselect,
oxarticles.oxtprice, oxarticles.oxurldesc, oxarticles.oxexturl,
oxarticles.oxrating, oxarticles.oxshortdesc, oxarticles.oxactivefrom,
oxarticles.oxactiveto, oxarticles.oxweight, oxarticles.oxbundleid,
oxarticles.oxfreeshipping, oxarticles.oxnonmaterial from oxarticles
where 1 and oxarticles.oxid = 'fc0db7e281eb713caaec500b29364ca7’
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘c8b674280b8b5a6e9a78541087a50384’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1

Untige Abfragen sind sog. SlowQueries (Abfragen und Zugriffe deren
Abarbeitung länger als 13.25 Sekunden Ausführungszeit benötigt). Die
durchschnittliche Laufzeit der Abfragen beträgt 8 Sekunden. Höhere
Laufzeiten gehen auf Kosten der Performance des Datenbankservers. Nutzen
Sie bitte für die Sessionverwaltung das lokale Dateisystem des
Webservers. Speziell dafür vorgesehen ist das Verzeichnis /tmp.

user count query_time lock_time rows_sent rows_examined
dbo283306720 4 5340 11 378126 924308
dbo283306720 3 select t.TABLE_NAME, c.COLUMN_NAME, c.COLLATION_NAME from
INFORMATION_SCHEMA.tables t LEFT JOIN INFORMATION_SCHEMA.columns c ON
t.TABLE_NAME = %% where t.TABLE_SCHEMA = %% and c.TABLE_SCHEMA = %% and
c.COLUMN_NAME in %% and ( t.TABLE_NAME != %% and c.COLUMN_NAME != %% )
and ( t.TABLE_NAME != %% and c.COLUMN_NAME != %% ) ORDER BY
(t.TABLE_NAME = %%) DESC;
dbo283306720 1 SELECT oxid FROM oxcategories WHERE oxvat IS NOT NULL
LIMIT %%;

  1. Wenn Sie Software wie z.B. ein CMS oder Shopsystem einsetzen,
    kontaktieren Sie bitte den Hersteller bzw. wenden sich an die
    einschlägigen Foren. Benutzen Sie die MySQL-Datenbank nicht für
    Anwendungen, welche die Datenbank stark belasten, z.B.
    Logauswerteverfahren, Add - Clicks, Chatsysteme, Bannerrotation,
    Sessionverwaltung oder Ähnliches. Nutzen Sie für die Sessionverwaltung
    das lokale Dateisystem des Webservers.

Gruß

Michael

Hallo Michael,

das sieht aus, als hättet Ihr ein Update gemacht und nun werden alle SEO URLs neu erstellt. Unter Umständen gibt es in diesen Fällen heftigsten Besuch von verschiedenen Bots, die das oben gesehene hervorrufen können.

Allerdings ist das nur die halbe Wahrheit. Man sollte bei solchen Dingen auch noch wissen: Wie viele Zugriffe passieren gleichzeitig (pro Sekunde), wie viele Artikel/Kategorien sind im Shop, sorgen ggf. Module für ungewöhnliches Verhalten usw…

Ihr beobachtet ja sicher über eine Analyse die Zugriffe auf den Shop. Ggf. kann es durchaus nötig sein, von einem hosted Webspace zu einem Server zu wechseln. In diesem Fall: Herzlichen Glückwunsch :slight_smile:

Gruß

Hallo Marco,

vielen Dank für Deine Antwort.
Wir haben einen komplett neuen Shop eingerichtet, also nicht upgedatet und diesen vor 2 Wochen freigeschaltet. Als zusätzliches Modul, habe ich nur Tinymce installiert.
Die Statistik von 1und1 zeigt mit für gestern 7723 Seitenaufrufe und 1628 Besucher an, Google analytics zeigt mir c.a. 800 Besucher an.

Ich habe gerade mit 1und1 telefoniert. Dort sagte man mir, das die hohen Zugriffszahlen von Sessions kommen die per Datenbank verwaltet werden. Ich solle den Shop so umstellen, das die Sessionverwaltung das lokale Dateisystem nutzt. Angeblich würde es bei vielen Shops, diese Einstellung geben.

Gruß
Michael

Hallo Michael,

m. E. ist die GA-Statistik um die Bots bereinigt. 800 “menschliche” Besucher ist schon ganz ordentlich, jedoch kein K.O. Gehen wir also mal davon aus, dass incl. Bots knapp 8.000 Seitenaufrufe passieren. Jetzt müsste man lediglich noch herausbekommen, ob es in bestimmten Zeiten Peaks gibt.
Der TinyMCE macht Dir in dieser HInsicht sicher keine Probleme, schalte besser trotzdem mal aus.

Aus der Entwicklung habe ich mir soeben sagen lassen, dass seit der 4er Version die Sessions überhaupt nicht mehr gehalten werden: Weder in der Datenbank noch in Dateien. Da liegen die Jungs etwas daneben.

Gruß

Ich habe jetzt noch 24 Stunden bis zur Abschaltung der Datenbank, also noch genügend Zeit dem Problem nachzugehen :-).
Der neue Server ist zwar quasi schon bestellt, aber auch hier gibt es Probleme, da es sich um einen alten Schlund Vertrag handelt, der in einem Partnerprogramm läuft und dieser nicht einfach herauszulösen ist.

1und1 stört sich an zu vielen Schreibzugriffen auf die Datenbank (max. 1000/h sind erlaubt), ein Beispiel wurde auch genannt:
update oxseo set oxexpired = 0 where oxtype = ‘oxarticle’ and oxobjectid
= ‘fc0db7e281eb713caaec500b29364ca7’ and oxshopid = ‘oxbaseshop’ and
oxlang = 0 limit 1

Diese Zeile kommt aus der Datei oxseoencoder.php und wenn ich mich nicht irre, wird hier überprüft, ob eine SEO-URL noch gültig ist. Aber warum wird dies so oft gemacht?

Gruß
Michael

Hallo Michael,

schau mal, vielleicht hilft Dir das hier weiter:

Die oxseo wird in dem Moment befüllt, wenn eine Seite erstmalig aufgerufen wird. Sollte sich dann z.B. der Titel eines Artikels ändern, wird die alte SEO URL eine andere Tabelle verschoben (Name grad nicht präsent) und eine neue SEO URL aufgebaut. Die alte SEO URL ist dann noch per 301 erreichbar und verweist auf die neue.

Vielleicht hilft es in Deinem Fall schon mal, die SEO URLs zurückzusetzen?

Gruß

Hallo Marco,

vielen Dank, das scheint es gewesen zu sein.
Zur Überprüfung habe ich in der Datei oxseoencoder.php, an der Stelle wo das Update erfolgt (Zeile 468) ein echo “update seo”; eingefügt. Danach habe ich auf jeder Seite des Shops ein “update seo” gesehen (bis zu 5 mal) und zwar auch nachdem ich die Seite aktualisiert hatte.
D.h. es wurde ständig die seo-Tabelle upgedatet obwohl die Seiten schon einmal aufgerufen wurden. Nachdem ich die SEO-ID´s zurückgesetzt hatte war ruhe.
Was heißt das jetzt aber genau, wann und wie oft muss man eigentlich die SEO.-ID´s zurücksetzten?

Gruß
Michael

Hallo Michael,

schwer zu sagen, wo es da geklemmt hat. Vielleicht irgendein Sonderzeichen, das nicht umgeschrieben wurde?

Gruß

wenn man die urls fest macht werden die doch nicht neu geschrieben oder lieg ich da falsch, wäre auch etwas blöd wenn ich ehrlich bin.

Url Fixiert ich versteh das so das die url so bleibt wie sie ist ( was auch am sinnvollsten ist )

Grüsse Steffen

Tja, zu früh gefreut, heute trat das Problem wieder auf.

Edit:
Sorry, das was ich gerade geschrieben hatte stimmt nicht, deswegen habe ich es wieder gelöscht.
Ich dachte ich hätte den Fehler eingegrenzt, war aber auf dem Holzweg (ist ja auch sehr warm heute).

Gruß
Michael

ja, manchmal iss bloed