Visualizza messaggio singolo
Vecchio 06 maggio 11, 22:25   #26 (permalink)  Top
ddrake
User
 
L'avatar di ddrake
 
Data registr.: 12-04-2007
Messaggi: 2.095
Citazione:
Originalmente inviato da BaroneRosso Visualizza messaggio
Allora ho abbassato il time out a 10 secondi vediamo come va, un paio di anni fa ci avevamo provato e non era andato proprio bene.

Riguardo il perche' e' stato messo a 30 secondi e' semplicemente un settaggio di default del forum ed e' dovuto all'enorme consumo di risorse che fa il MySql con le ricerche.
Il Mysql non e' proprio il massimo con il suo algoritmo di ricerca ed anche ottimizzando le risorse a salire delle dimensioni del DB cresce esponenzialmente il carico sul sistema (sia di CPU che di Ram), non e' una cosa che si e' inventata il sottoscritto ma un dato di fatto basta andare sul sito del VBulletin e dare una letta alla sezione forum di grosse dimensioni.
Considerate poi che la ricerca viene effettuata su un DB di oltre 4 milioni di record, mentre la tabella principale che contiene tutti i post, dove di solito e' effettuata principalmente la ricerca, e' grande circa 2.5GiB, quindi non sono proprio 4 campi da cercare. I forum piu' grandi, vedi ad esempio HWupgrade, hanno server appositi con un duplicato del DB dedicati esclusivamente alle funzioni di ricerca proprio per evitare sovraccarichi sulle macchine principali.

L'ottimizzazione si puo' certamente fare, ma per tutto c'e' un limite di risorse HW, ovviamente si possono acquistare macchine sempre piu' grosse (ed infatti e' quello che generalmente si fa) ma visto che non e' che i server non e' che li regalino dentro le uova di Pasqua si cerca di rimanere nei limiti delle proprie possibilita'
Tanto per la cronaca BaroneRosso.it gira su ben 2 server e la scorsa settimana sono stato in farm per aumentare la ram del server principale che e' stata portata a 24GB totali, visto che ultimamente avevamo finito i 12GB installati.
Intanto grazie per il vostro lavoro

Spesso cali di prestazioni in MySql (ma anche negli altri dbms) sono dovuti alla progettazione del database più che alla pesantezza delle richieste. La buona notizia è che ripensando un po' la struttura si possono migliorare le cose. Il partizionamento su server di ricerca con dischi SSD è un'opzione, certo. Anche un partizionamento con discriminanti temporali avrebbe un senso.
Si potrebbe anche fare uno split delle tabelle più grandi su più dischi se non è già stato fatto. MySql ha un sistema abbastanza semplice per realizzarlo, i symlink.

Non conosco l'OS di baronerosso ma sotto Solaris c'è un'importante funzionalità di non dividere su più cilindri un file.

Non conosco in dettaglio vbulletin. Occorrerebbe anche capire come gestisca il carico di lavoro. Quante fork query faccia per una ricerca a seconda della situazione di carico del sistema. Parte dell'inefficienza potrebbe essere situata qui.

Nei nostri test eseguivamo senza problemi centinaia di query contemporanee su datawarehouse > 10gb. Server Solaris, db Oracle

Ciao!
__________________
Senza entusiasmo non si è mai compiuto niente di grande. R.W. Emerson

Ultima modifica di ddrake : 06 maggio 11 alle ore 22:28
ddrake non è collegato   Rispondi citando