Datenbankprobleme / Abfragen hängen sich auf

Fragen rund um die Installation, Administration und Benutzung von phpBB.
Forumsregeln
Bitte im Thementitel den Präfix deiner phpBB-Version angeben
utebar
Mitglied
Beiträge: 23
Registriert: 04.06.2011 22:53

Datenbankprobleme / Abfragen hängen sich auf

Beitrag von utebar »

Hallo in die phpbb Runde,

wir betreiben ein Forum mit der 3.0.14 phpbb3 Version und seit einigen Wochen veranstaltet die Datenbank einen Riesenzirkus und ständig haben wir Ausfälle durch mysql Errormeldungen oder durch Nichterreichbarkeit der Seite zu beklagen. Was in diesem Zusammenhang auffällig ist, sind die exorbitant hohen Abfragen, die auf das Forum auflaufen. Gestern waren es laut Hoster im Durchschnitt 62 Aufrufe pro Sekunde und die Höchstwerte lagen schon bei 300 Aufrufen pro Sekunde. Das kann bei durchschnittlich vielleicht 10 eingeloggten Usern und von mir aus 100 Gästen im Forum gar nicht sein, dass da zig Millionen Aufrufe am Tag getätigt werden. Habe vorsorglich erst einmal die unwichtigen Bot-Zugriffe vom Hoster auf maximal 5 Verbindungen limitieren lassen und da kamen auch schon 30 Bots zusammen. :o

Der Hoster meint, wir sollten unbedingt unsere Datenbank mal optimieren und das würden wir ja auch gern tun, aber wir wissen nicht so recht, wie und wo wir da anfangen sollten. Was auffällt ist, dass zum Beispiel die Tabelle phpbb_posts mit knapp 1,4 Millionen Einträgen und insgesamt fast 4GB ziemlich groß ist. Der Hoster hat schon gemeint, ob wir da nicht Einträge löschen könnten, aber das erscheint mir ja sehr frevelhaft, Content von einer Webseite zu löschen, um eine bessere Datenbankperformance zu erreichen. Habt ihr vielleicht eine zündende Idee und einen guten Tipp parat, wie man eine Datenbank in dieser Größenordnung optimieren, neu aufstellen oder neu strukturieren kann, ohne dass sich die Abfragen aufstauen und hängenbleiben? Hattet oder kennt ihr solche Datenbankprobleme auch und wie bekommt man diese denn bitte in den Griff?

Danke und viele Grüße
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12178
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: Datenbankprobleme / Abfragen hängen sich auf

Beitrag von Mahony »

Hallo
utebar hat geschrieben:wir betreiben ein Forum mit der 3.0.14 phpbb3 Version und seit einigen Wochen veranstaltet die Datenbank einen Riesenzirkus und ständig haben wir Ausfälle durch mysql Errormeldungen...
Wie lauten denn die Fehlermeldungen?
utebar hat geschrieben:oder durch Nichterreichbarkeit der Seite zu beklagen.
Wie macht sich das denn bemerkbar? Bekommst du da Fehlermeldungen? Oder nur eine weiße Seite?
utebar hat geschrieben:Hattet oder kennt ihr solche Datenbankprobleme auch und wie bekommt man diese denn bitte in den Griff?
Eine pauschale Aussage ist hierbei nicht möglich, da zunächst einmal zu ermitteln wäre, worin denn nun die eigentlichen Ursachen bestehen.

Also ich würde folgendermaßen vorgehen.

1. Das Forum auf die aktuellste phpBB-Version updaten. Da bereits darin das erste Problem bestehen könnte, dass ihr keine aktuelle phpBB-Version verwendet (zum Beispiel läuft phpBB 3.0.14 NICHT korrekt unter PHP 7.x).

2. Genau analysieren, woher die vielen Abfragen stammen (falls diese nach dem Updaten der phpBB-Software dann überhaupt noch auftreten).

3. Je nach Ergebnis der Fehleranalyse handeln.

Da man aber nur nach Kenntnis der Fehler entsprechend handeln kann, kann dir hier niemand, zum jetzigen Stand der Dinge, tatsächliche Hilfe bieten.


Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
utebar
Mitglied
Beiträge: 23
Registriert: 04.06.2011 22:53

Re: Datenbankprobleme / Abfragen hängen sich auf

Beitrag von utebar »

Hallo Mahony,
vielen Dank für deine Antwort und deine Hinweise.
Ja, die Fehlermeldungen sahen wie folgt aus:

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysqli ]

Table './d01d1768/phpbb_posts' is marked as crashed and last (automatic?) repair failed [144]

SQL

SELECT t.*, f.*, p.post_approved, p.post_time, p.post_id, tw.notify_status, bm.topic_id as bookmarked, tt.mark_time, ft.mark_time as forum_mark_time FROM (phpbb_forums f CROSS JOIN phpbb_posts p CROSS JOIN phpbb_topics t) LEFT JOIN phpbb_topics_watch tw ON (tw.user_id = 1085 AND t.topic_id = tw.topic_id) LEFT JOIN phpbb_bookmarks bm ON (bm.user_id = 1085 AND t.topic_id = bm.topic_id) LEFT JOIN phpbb_topics_track tt ON (tt.user_id = 1085 AND t.topic_id = tt.topic_id) LEFT JOIN phpbb_forums_track ft ON (ft.user_id = 1085 AND t.forum_id = ft.forum_id) WHERE p.post_id = 1607909 AND t.topic_id = p.topic_id AND (f.forum_id = t.forum_id OR (t.topic_type = 3 AND f.forum_type = 1))

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/includes/db/dbal.php
LINE: 760
CALL: trigger_error()

FILE: [ROOT]/includes/db/mysqli.php
LINE: 189
CALL: dbal->sql_error()

FILE: [ROOT]/viewtopic.php
LINE: 299
CALL: dbal_mysqli->sql_query()

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

Allgemeiner Fehler
SQL ERROR [ mysqli ]

Table './d01d1768/phpbb_posts' is marked as crashed and last (automatic?) repair failed [144]

SQL

SELECT p.post_id AS post_id, p.topic_id AS id, p.viewed_post_id, u.username AS moderator, p.viewed_post_time AS time FROM phpbb_posts p LEFT JOIN phpbb_users u ON u.user_id=p.viewed_post_id WHERE p.topic_id = '324702' ORDER BY p.post_id DESC

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/includes/db/dbal.php
LINE: 760
CALL: trigger_error()

FILE: [ROOT]/includes/db/mysqli.php
LINE: 189
CALL: dbal->sql_error()

FILE: [ROOT]/search.php
LINE: 1089
CALL: dbal_mysqli->sql_query()

--------------------------------------------------------------------------------------
Wenn die Seite nicht erreichbar ist, dann ist diese weiß und dann steht eine Art Browsermeldung: Website nicht erreichbar.
Das Forum auf die aktuellste phpBB-Version updaten, ist ja schön und gut, nur hat das jetzige phpbb-Skript bestimmt so an die 100 Modifikationen verbaut. Aber scheinbar werden wir wohl nicht drumrum kommen, wenn sich die phpbb-Version 3.0.14 nicht mit der derzeitigen php7.3 Version nicht "verträgt". Diesen Gedankengang hatte ich auch schon mal, weil diese Ausfälle seit der Umstellung von php5.6 auf 7.3 verstärkt auftraten. Welche phpbb Version wäre denn da für php7.3 zu empfehlen? Gleich die neueste 3.2.7 Version oder eine andere?

Danke und viele Grüße
Benutzeravatar
Scanialady
Supporter
Supporter
Beiträge: 1723
Registriert: 23.02.2009 16:29
Wohnort: Velbert (NRW)
Kontaktdaten:

Re: Datenbankprobleme / Abfragen hängen sich auf

Beitrag von Scanialady »

3.2.7 (oder die bis dahin aktuelle) Version von phpBB ist das Mittel der Wahl. Doch wird PHP 7.3 auch davon noch nicht unterstützt - du solltest auf 7.2 zurücksetzen. phpBB 3.0.14 unterstützt PHP 7 auch nicht.
Die Bosheit trinkt die Hälfte ihres eigenen Giftes (Lucius Annaeus Seneca)
-
Wenn von etwas kein Backup existiert, dann ist es nicht wichtig.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5387
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Datenbankprobleme / Abfragen hängen sich auf

Beitrag von oxpus »

Table './d01d1768/phpbb_posts' is marked as crashed
Das deutet auf den Ausfall der genannten Tabelle phpbb_posts hin.
Du solltest mit Tools wie phpmyadmin zunächst einmal versuchen, die Tabelle zu reparieren, sonst bleibt dein Forum weiterhin unbenutzbar.

Ob der Crash allerdings eine Folge der zahlreichen und extrem gestiegener Zugriffszahlen war oder ob sich die Zugriffszahlen erhöhten, weil eben die Tabelle als defekt markiert ist, wäre noch zu klären.

Dennoch sollte zunächst die Datenbank repariert werden, bevor man weitere Analysen durchführen kann.
Ein Update des Forums auf die neueste Version bringt bei dieser o. g. Fehlermeldung auch überhaupt nichts, da diese Tabelle dafür ansprechbar sein muss und nicht defekt sein darf.

Und nein:
Die Datenbankperformance hat zunächst nur indirekt mit der verwendeten phpBB Version zu tun.
Bei der angegebenen Größe von über 4 GB nur in der posts-Tabelle muss es sich schon um ein sehr großes Forum handeln, was in einer Datenbank auf nur einem Server schnell zu Einbrüchen der Performance führen kann.

Da wäre ein stärkerer Server oder besser ein Serververbund inkl. Load Balancer die wohl dauerhaft sinnvollste Anpassung, um die Last wieder auf ein Normalmaß zu bekommen. Und dazu auch eine Aufteilung, bzw. verdoppelte Datenbank mit gegenseitiger automatischer Aktualisierung auf die eingesetzten Server.

Ggf. könnte man aber auch über ein Archiv nachdenken. Also das aktuelle Forum inkl. Datenbank einmal spiegeln, in der Forumkopie dann alle Beiträge nach einem Stichtag löschen, so dass man dort eben nur die "alten" Beiträge vorhält. Und im "Original"-Forum die Beiträge eben vor dem Stichtag löschen, um die Last dann sofort und spürbar zu verringern.
Vorausgesetzt, dein Forum war keinem (D)DoS-Angriff ausgesetzt, was die hohe Anzahl an Zugriffen erklären könnte. Dann nützen eher Webserver-Module etwas, die darauf spezialisiert sind. Wobei man die bei Google allesamt inkl. Anleitungen finden kann.

Das sind dann die wohl besseren Empfehlungen, bevor man sich an ein Upgrade des phpBB selber dransetzt, wobei dann ja auch diverse MODs mit konvertiert werden müssten (also von phpBB 3.0 auf 3.2), wenn es dafür keine Nachfolgeversionen gäbe.
Aber ein Update wäre auch spätestens dann fällig, wenn die PHP 5.6 nicht mehr zur Verfügung steht, was bei den meisten Providern mittlerweile der Fall ist, außer man unterhält einen eigenen, dedizierten Server.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
utebar
Mitglied
Beiträge: 23
Registriert: 04.06.2011 22:53

Re: Datenbankprobleme / Abfragen hängen sich auf

Beitrag von utebar »

Mylady hat geschrieben:Doch wird PHP 7.3 auch davon noch nicht unterstützt - du solltest auf 7.2 zurücksetzen.
Das habe ich jetzt auch mal gemacht und auf 7.2 zurückgesetzt - vielleicht bringt das ja auch schon was.

@oxpus: Wenn die Tabellen spinnen, dann rufe ich immer den Hoster an und der repariert diese dann immer umgehend. Der Hoster hat gemeint, ich könnte die aufgestauten Abfrageprozesse nicht beenden und das müsste er machen. Jetzt im Moment arbeitet ja die phpbb_posts Tabelle ja einwandfrei, aber das kann sich natürlich auch von jetzt auf gleich wieder ändern. Der jetzige Server schaut wie folgt aus:

Intel® Xeon® E3-1246v3
4 Prozessorkerne 3,5GHz
Hyper-Threading
16 GB RAM
1 TB HDD (RAID 1)
+ 250 GB SSD (RAID 1) für MySQL

und der sollte das doch locker bewerkstelligen können.

Die Idee mit der Auslagerung eines Archives finde ich auch ganz gut, das muss ich mir noch mal genauer durch den Kopf gehen lassen, wie ich dann auch locker und flüssig, allen Content bereitstellen und aufrufen kann. Ein (D)DoS-Angriff war oder ist es nicht und wurde auch von Hosterseite schon ausgeschlossen. Das Forum läuft schon einige Monate nicht mehr auf PHP 5.6, sondern das phpbb-Skript wurde auf PHP7 angepasst und läuft eben jetzt seit einigen Minuten auf 7.2 statt 7.3 und mal schauen, ob sich das auch schon etwas auswirkt. Aber irgendwann werden wir uns wohl trotzdem an die phpbb Aktualisierung heranmachen müssen, denn die 3.0.14er Version wird ja nun auch nicht bis zum St. Nimmerleinstag laufen.

Danke und viele Grüße
utebar
Mitglied
Beiträge: 23
Registriert: 04.06.2011 22:53

Re: Datenbankprobleme / Abfragen hängen sich auf

Beitrag von utebar »

Ggf. könnte man aber auch über ein Archiv nachdenken. Also das aktuelle Forum inkl. Datenbank einmal spiegeln, in der Forumkopie dann alle Beiträge nach einem Stichtag löschen, so dass man dort eben nur die "alten" Beiträge vorhält. Und im "Original"-Forum die Beiträge eben vor dem Stichtag löschen, um die Last dann sofort und spürbar zu verringern.
Das hört sich ja gut und schön an, nur sehe ich da den Nachteil, dass ein solches Archiv inklusive aller Beiträge eine neue Url-Bezeichnung bekäme und man dadurch Gefahr läuft, sich die alten Beiträge aus dem Google-Index rauszukegeln, weil diese unter der alten Url dann nicht mehr erreichbar sind. Seht ihr das auch so oder habe ich da einen Denkfehler?

Danke und viele Grüße
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5387
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Re: Datenbankprobleme / Abfragen hängen sich auf

Beitrag von oxpus »

Wenn man vom Forum einen dauerhaften Link zum Archiv einfügt, indiziert Google das Archiv auch umgehend mit.
Es dauert halt immer etwas Zeit, aber bei geschickter Verlinkung nie wirklich lange.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
utebar
Mitglied
Beiträge: 23
Registriert: 04.06.2011 22:53

Re: Datenbankprobleme / Abfragen hängen sich auf

Beitrag von utebar »

Eben habe ich mal ein paar Beiträge im Forum abmoderiert und dann kam nach ein paar Minuten diese Fehlermeldung:

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysqli ]

MySQL server has gone away [2006]

SQL

SELECT p.post_id AS post_id, p.topic_id AS id, p.viewed_post_id, u.username AS moderator, p.viewed_post_time AS time FROM phpbb_posts p LEFT JOIN phpbb_users u ON u.user_id=p.viewed_post_id WHERE p.topic_id = '324727' ORDER BY p.post_id DESC

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/includes/db/dbal.php
LINE: 760
CALL: trigger_error()

FILE: [ROOT]/includes/db/mysqli.php
LINE: 189
CALL: dbal->sql_error()

FILE: [ROOT]/search.php
LINE: 1089
CALL: dbal_mysqli->sql_query()
Die Topic-ID 324727 war da mit dabei, also muss ich ja diesen "Tabellenaufhänger" vielleicht ausgelöst haben. Aber was könnte das denn gewesen sein? Habt ihr da vielleicht mal bitte eine Erklärung oder könnt ihr eine konkrete Ursache aus dieser Fehlermeldung herauslesen?

Danke und viele Grüße
Benutzeravatar
Mahony
Ehemaliges Teammitglied
Beiträge: 12178
Registriert: 17.11.2005 22:33
Wohnort: Ostfildern Kemnat
Kontaktdaten:

Re: Datenbankprobleme / Abfragen hängen sich auf

Beitrag von Mahony »

Hallo

Lies mal bitte die Fehlermeldung
MySQL server has gone away [2006]
Das liegt entweder an der Server-Konfiguration (da müsstest du deinen Hoster anschreiben), oder die Indizes sind deaktiviert.

Kannst ja mal prüfen per SQL-Befehl

Code: Alles auswählen

SHOW INDEX FROM phpbb_posts
und

Code: Alles auswählen

SHOW INDEX FROM phpbb_users
Anschließend dann (zum aktivieren der Indizes, falls deaktiviert)

Code: Alles auswählen

ALTER TABLE phpbb_posts ENABLE KEYS
und

Code: Alles auswählen

ALTER TABLE phpbb_users ENABLE KEYS
P.S. Sollten die Indizes aktiviert sein, muss es am Server liegen. Hier geht es dann zur Lösung des Problems >>> https://dev.mysql.com/doc/refman/8.0/en/gone-away.html (max_allowed_packet höher einstellen (einstellen lassen)).



Grüße: Mahony
Taekwondo in Berlin
Wer fragt, ist ein Narr für fünf Minuten, wer nicht fragt, ist ein Narr für immer.
Antworten

Zurück zu „Support-Forum“