Probleme Forum din cauza server-ului MySQL

Sugestii, informatii de adaugat pe site si propuneri de categorii pentru forum

Moderator: Manu

Scrie răspuns
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Probleme Forum din cauza server-ului MySQL

Mesaj de Manu »

Dupa cum s-a observat de o vreme si dupa cum s-a scris in alte topicuri, sunt probleme legate de functionarea server-uului MySQL.
Din cauza unui numar foarte mare de interogari, actualizari si stergeri in bazele de date, sistemele Hostgator au detectat si au impus o limita pe query-urile aproape simultane.
Pana la urma, daca cei de la support nu au raspuns la tichet, am dezactivat lucrul cu baza de date la sistemul de management al cautarii prin forum. Am dezactivat anuland toate if-urile care verificau un query corect, astfel se sare momentan peste partea cu lucrul pe tabelul cu sutele de mii de cuvinte atribuite topic-urilor.
phpBB are un sistem ciudat de cautare, practic la fiecare postare a unui mesaj nou, se apuca sa splituiasca tot continutul pe baza spatiului si apoi introduce intr-un tabel fiecare cuvant din topic cu un id care refera acel topic.
In cazul unor mesaje mai lungi, cuvintele fiind destul de multe se apuca sa faca o bucla prin care baga de zor cate un cuvant pe cate un rand nou. Astfel ajungea la limita de actiuni la interval scurt, aproape simultane pe aceeasi tabela.
Am vazut acum o vreme ca acel tabel cu cuvinte pentru cautare avea cateva milioane de randuri.

Asadar, pana una alta nu se va prea putea cauta prin forum pe baza cuvintelor cheie.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Culmea, exact acum mi-au scris si cei de la suport ca au ridicat restrictia, cica avand in vedere ca solicitarile pe bazele de date au ajuns la un nivel acceptabil. Deocamdata mai las dezactivata partea cu cuvintele cheie sa vedem ce si cum.

Mai trebuie sa descopar prin zecile de fisiere php pe unde e partea cu numarul total de mesaje postate, si acela a ramas in urma cu vreo 50, in perioada restrictiilor nu se actualiza.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

In cele din urma am reparat si restul problemelor, au fost niste desincronizari intre numarul real de mesaje si numarul afisat. Forumul asta a fost programat prin 2001 si mi se pare ciudat ca salveaza numarul de mesaje dintr-un forum, intr-o tabela si apoi tot pe el se bazeaza, fara sa se mai uite din cand in cand daca se intampla si altfel sa dispara un mesaj sau sa apara, nu doar pus de scripturile lui.
Practic exista o tabela "forums" unde sunt numele fiecaruia cum e "IT & C", "Coltul surprizelor" etc., iar pentru fiecare apare pur si simplu scris cate mesaje si cate topicuri exista, valori care se incrementeaza sau se decrementeaza in momentul crearii si in momentul stergerii mesajelor sau topicurilor. Cum era limita pe numarul de actiuni in baza de date, nu mai ajungea sa faca si aceasta modificare si numerele ramaneau la fel ca in momentul punerii restrictiei.
Am actualizat pana la urma manual dupa ce am facut niste query-uri prin care am verificat cate topicuri si mesaje sunt in total per forum, desincronizarile fiind exact la cele doua forumuri mentionate, cele in care s-a scris in ultima saptamana.
Ar fi fost bun un modul care sa faca astfel de reparatii in baza de date, sa vada totusi daca in timp nu au aparut desincronizari.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Se pare ca ceva tot nu functioneaza cum trebuie. Am incercat sa caut pe forum, dar am primit eroarea:
Eroare generala
Could not obtain matched posts list
DEBUG MODE
SQL Error : 1146 Table 'ldvcluj2_phpbb1.forum_search_wordmatch' doesn't exist
SELECT m.post_id FROM forum_search_wordlist w, forum_search_wordmatch m WHERE w.word_text LIKE 'cascaval' AND m.word_id = w.word_id AND w.word_common <> 1
Line : 340
File : search.php
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Da, nu am reactivat cautarea, va trebui sa refac acea baza de date astfel incat sa functioneze din nou.
Dupa cum spuneam, cautarea pe forumurile astea e cam ciudata, se baga intr-o tabela cate un cuvant cu id-ul postului in care acesta apare. Asa s-a ajuns la peste un milion de randuri. Acolo se consumau cele mai multe resurse MySql, mai ales la postare cand se face un explode pe spatiu si apoi rezultatul era inserat rand cu rand in baza de date. Astia de la Hostgator au considerat ca se exagereaza cu solicitarile pe serverul de MySQL. O sa reactivez cautarea, intr-adevar e cam neplacut sa nu poti gasi cate ceva mai usor.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Se pare ca phpBB isi face propriul sistem de fulltext search in loc sa il lase in seama MySQL. Avantajul este ca pot sa il faca oricat de specific vor, desi cred ca MySQL ofera suficiente facilitati in acest domeniu. Dezavantajul este ca intr-adevar programul e in PHP nu unul super optimizat scris in C, asa ca se consuma mult mai multe resurse.
Si eu am folosit aceeasi metoda pentru fulltext search in Maestro DEX fiindca aveam nevoie sa se poata cauta in corpul definitiilor dupa orice forma a cuvantului si sa se gaseasca toate definitiile care contin acel cuvant, iar bazele de date nu prea stiu sa faca asa ceva, mai ales cu texte scrise in romana.
Imi pare totusi ciudat ca au impus acea limitare. Inseamna ca restrictiile de acces la resurse sunt foarte mari.
Scrie răspuns