Seite 1 von 2
Anlegen/Editieren/etc. von Beitraegen dauert lange
Verfasst: 13.07.2006 09:49
von Patrick.S
Hallo,
ich habe ein mittelmaessig besuchtes Forum und seit Neuestem das Problem, dass, gerade Abends (auch wenn sich da in der Zeit nicht mehr als 15 User gleichzeitig befinden) das Anlegen von Beitraegen und aehnlichem aeusserst lange dauert. Da kann man schonmal bis zu 2 Minuten warten, bis der Beitrag abgeschickt wurde.
Zu beobachten ist dann auch, dass der mysqld-Prozess auf dem Server mit Volllast laeuft und ewig (auch noch nachdem der Beitrag bereits in der DB steht) weiter rattert. Laut phpmyadmin wird ein SELECT auf die Tabellen phpbb_search_wordlist und phpbb_search_wordmatch ausgefuehrt.
Meine phpbb_search_wordmatch-Tabelle fasst etwa 30.000.000 Datensaetze. Das macht bei 113392 Beitraegen etwa 260 Woerter im Durchschnitt pro Beitrag, wenn ich das richtig verstehe.
Ist das realistisch? Haengt sicherlich von der Thematik im Forum ab: ist ein Auto-Forum.
Was meint ihr? Kann es an der Groesse der Tabelle phpbb_search_wordmatch liegen? Dann wuerde ich den Suchindex mal neu aufbauen.
Oder habt ihr andere Anregungen oder kennt das Problem sogar?
danke schonmal,
Patrick
Verfasst: 13.07.2006 09:52
von Markus67
Hi ...
da hab ich was interessantes für dich
KB:suchtabellen_verkleinern
Markus
Verfasst: 13.07.2006 09:54
von Patrick.S
Meinst du denn, dass es daran liegen koennte?
Dann wuerde ich es auf jeden Fall heute Abend ausprobieren.
Verfasst: 13.07.2006 09:59
von Markus67
Hi ...
das kann durchaus ein Grund sein. Ob es letztendlich auch wirklich der Grund ist weisst du erst wenn du es ausprobiert hast. Schaden kann es auf keinen Fall und der Performance tut es auf jeden Fall gut.
Von daher ... ausprobieren ... und dann schauen wir mal weiter
Markus
Verfasst: 07.08.2006 09:17
von Patrick.S
Leider war es das nicht.
Die Datenbank ist allerdings von 1,3 GB auf 550 MB geschrumpft, immerhin.
Hat noch jemand eine Idee?
Verfasst: 11.10.2006 11:12
von Patrick.S
Hat sonst noch jemand Ideen?
Das Problem besteht weiterhin und ich weiss im Moment nicht weiter.
Ich bin im Moment der Einzige in dem Forum und setze einen Beitrag ab.
Die Server-Load ist jetzt auf ueber 2.0 gestiegen und das auf einem Server, der sonst bei 0.00 - 0.15 laeuft, also fast ohne Auslastung.
Das Beitrag-Senden dauert mittlerweile ueber 2 Minuten.
Verfasst: 26.12.2006 22:53
von Patrick.S
Hab das Problem bis heute und werde die naechsten Wochen auf das wbb umsteigen, da ich immer noch keine Loesung gefunden habe.
Habe viele Stunden in die Fehlersuche investiert und hier scheint es auch keine Loesungsansaetze mehr zu geben.
Schade, halte die Software fuer aeusserst robust und schnell, aber ich habe keine andere Wahl.
Verfasst: 07.01.2007 18:31
von Patrick.S
Hallo,
es kann sein, dass ich festgestellt habe, woran das Problem liegt.
Ich wollte gerade heute damit anfangen, die ganzen Daten in eine andere Software zu uebertragen und gucke mir vorher noch die alte Struktur der Daten an und dabei faellt mir auf, dass ich in der Tabelle search_wordlist einige doppelte Eintraege fuer ein und das selbe Wort habe.
Z. B. gibt es zum Wort "motor" in dieser Tabelle 1231 Eintraege.
Wenn ich das System aber richtig verstehe, dann sollte jedes Wort in der Tabelle nur ein mal auftauchen und die eigentliche Verknuepfung zum Post hin via search_wordmatch aufgeloest werden.
Sehr interessant.. wie kommt das denn nun wieder zustande...?
Ich geb mich mal wiederholt auf die Suche im Quellcode, vielleicht finde ich ja den Uebeltaeter. Wenn aber trotzdem jemand einen Tipp hat, immer her damit.
btw: Meine Tabelle search_wordmatch hat schon wieder 85.485.919 Eintraege und damit ca. 1,9 GB...
Danke,
Patrick
Verfasst: 07.01.2007 22:11
von Miriam
Patrick.S hat geschrieben:Wenn ich das System aber richtig verstehe, dann sollte jedes Wort in der Tabelle nur ein mal auftauchen und die eigentliche Verknuepfung zum Post hin via search_wordmatch aufgeloest werden.
So ist es vorgesehen.
Wirf mal einen Blick in die includes/functions_search.php
Verfasst: 07.01.2007 22:32
von Patrick.S
Ja, da bin ich fuendig geworden.
In der Funktion add_search_words wird auf verschiedene Datenbanken (postgresql, msaccess, oracle, db2, etc.) geprueft und nur bei db2 findet eine Pruefung statt, ob das hinzuzufuegende Wort bereits in der Tabelle ist.
Ich nutze mySQL 4.x und gelange in keinen der Case-Zweige.
Im Endeffekt behebt das doch aber gar nicht mein Problem, glaube ich.
Denn folgendes:
Meine search_wordlist-Tabelle fasst ca. 510.000 Datensaetze.
Die waere nach einer eventuellen Optimierung zwar viel kleiner, ist aber gar nicht der Uebeltaeter. Denn die Tabelle search_wordmatch (Verbindungs-Tabelle) ist diejendige, die gut 1,9GB bei 85.000.000 Datensaetzen belegt.
Die wird dadurch ja nicht kleiner, denn die Verbindungen bleiben die selben, nur eben auf, zum Teil, andere word_ids verknuepft.
Wie gross sind denn eure wordmatch Tabellen?