Numero eccessivo query drupal

15 contenuti / 0 new
Ultimo contenuto
Numero eccessivo query drupal

Salve a tutti,
Possiedo un blog che usa Drupal, è un cms che diciamo non è da molto che uso.
Installando il modulo Devel, ho visto che il sito fa circa 360-380 query per la Home page e 280 per le altre pagine.
A me sembra questa una situazione anomala, perchè, non ho un miliardo di moduli, ho tutto ciò che serve ad un normale blog e tengo attivo il caching.

È normale un numero così spropositato di query?

Non c'è qualche modo per ottimizzarlo?

Ciao e grazie in anticipo.

Dal mio povero incasinato sandbox (in locale):
admin/settings/devel (admin) 199 query 24 ms, page exec 620 ms
node/381 (node) 201 query 63 ms, page exec 690 ms
frontpage (view) 304 query 37 ms, page exec 670 ms.

Nonostante il numero di query (e Drupal fa tanti query perchè molto, molto configurabile) è sempre < 10% del tempo totale.

Più imparo, più dubito.

Quimdi é normale?

Capisco l'altissima personalizzabilità, ma 300 query per una semplice pagina è un numero disumano. Non dico ne debba fare 10, ma comunque un numero più contenuto... Non esiste un modo per ottimizzare quindi?

Uno c'è: lascia il sito in inglese.

Per ogni richiesta Drupal chiede al DB per capire quale moduli usare/caricare, quale temi, a quale funzione corrisponde l'URL, magari tramite alias, poi deve caricare i menù, i blocchi, I could go on.

Ma se guardi la lista di query tramite Devel, una buona parte viene da locale - cioè la traduzione di t('Hello World') in "Ciao Mondo". E possono essere tanti.

Ma ripeto, se al massimo questi numerosissimi query occupano 10% del tempo, non è meglio occuparsi del restante 90% prima?

Più imparo, più dubito.

Il fatto è che le query non mi occupano il 10%, ma il 60% circa.

Executed 359 queries in 664.04 milliseconds. Page execution time was 932.95 ms. Homepage

Executed 258 queries in 501.6 milliseconds. Page execution time was 898.27 ms. Altre pagine

Puoi ben capire quindi che è un problema abbastanza importante...

Hmm. Adesso capisco il tuo dilema...

Su un hosting 'economico' (nessun ottimizzazione):

admin/settings/devel (admin) 101 query 735 ms, page exec 1730 ms
node/xxx (node) 140 query 240 ms, page exec 1071 ms
views/list (view) 182 query 470 ms, page exec 2206 ms.

Quindi sono al 25% circa. Ma sono pagine abbastanza 'puliti' - dovuto al hosting più che altro.

Beh, la buona notizie è che hai un hosting abbastanza veloce (tempi totale, ma anche query), il problema è che hai tanti query in più di me...

Bisogna analizzare i risultati di Devel (magari metterli in ordine di tempo) per capire chi consuma più tempo, o fa tanti query alla stessa tabella. Controllando il nome delle tabelle può dire quale moduli fanno più query. Per quelli core non puoi fare molto, ma forse trovi uno o due aggiunti che stressano troppo il sistema.

Views e CCK hanno un loro sistema di caching, molto efficace, ma io ho avuto (per esempio) un brutto esperienza con custom_breadcrumbs che generava una marea di query (50+).

E' possibile che hai esagerato con i block (che magari sono views o menù)

La prossima tappa (se il sito è quasi finito) è di controllare le varie livelli di caching. Vedi http://drupal.org/node/326504 (en) e http://blog.psicomante.net/drupal-e-la-cache-come-funziona.html (it)

In fine, per i coraggiosi, puoi mettere le mani sul configurazione (di sessione) di MySQL con Drupal tweaks e/o DB Tuner.

Puoi (con phpMyAdmin) controllare i variabili di config usando la query SHOW VARIABLES qui il riferimento a questi variabili - solo quelli dinamici possono (forse) essere modificati senza riavviare mysql.

Più imparo, più dubito.

Ho fatto delle rpove a disabilitare ed abilitare i moduli. Il numero di query sale abbastanza proporzionalmente, quindi non c'è un modulo esattamente colpevole. I blocchi che uso sono davvero pochi. Uno per i tag, uno per l'archivio, uno per le categorie, uno per la ricerca.

Su mysql non posso ovviamente metter mani essendo un hosting condiviso. Mi sembra comunque un problema strano visto che Drupal è usato da portali enormi, ci deve pur essere una soluzione a questo problema.

io ho notato una cosa anomala e non so se può essere legata a questo omeno, in caso contrario apro un altro post.

sono su juna vps e ho notato certe volte che andando in pagine piu 'pesanti' tipo la pagina dei moduli o se attivo l' aggiornamento automatico dei moduli ho spesso pagine bianche e WSOD.
ma la cosa strana è che la cpu e la memoria usata dalla vps è sempre molto bassa, la memoria di swap è fissa a zero.
cosa potrebbe essere?

melissa wrote:
sono su juna vps e ho notato certe volte che andando in pagine piu 'pesanti' tipo la pagina dei moduli o se attivo l' aggiornamento automatico dei moduli ho spesso pagine bianche e WSOD.
ma la cosa strana è che la cpu e la memoria usata dalla vps è sempre molto bassa, la memoria di swap è fissa a zero.
cosa potrebbe essere?

A quanto hai impostato il "PHP memory limit"?

il memory limit è su 128mb di ram.

melissa wrote:
il memory limit è su 128mb di ram.

Da quello che hai scritto il problema non penso sia della VPS.

128MB di PHP Memory Limit sono già buoni ma è relativo anche ai moduli che hai attivi, sia per quantità che per la funzione che svolgono.

IMHO penso sia questo il motivo che causa le problematiche che hai riportato.

quindi è un problema di ram secondo te?

la cosa che proprio non capisco è che anche in momenti di WSOD la ram usata è molto bassa.

Il hosting può controllare in diversi modi il traffico, per diverse raggioni. Anche se vedi 128 M :) Chi ha un server dedicato lo sà :) Provate a mandargli un ticket ogni mese, altrimenti si dimenticano . :)

----------------------------------------
bI’Iqchugh’ yIvang !
Se sei triste, agisci!

Proverbio Klingon

non capisco cosa vuoi dire johnny che il hosting puo controllare il traffico in vari modi?

i 128 mb non sono reali dici?

spiegami bene per favore perchè il hosting dice sempre che è tutto ok.