Numero eccessivo query drupal

15 contenuti / 0 new
Ultimo contenuto
Offline
DrupalNiubbo
Iscritto: 4 Set 2010
Messaggi: 6
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.

Ritratto di jhl.verona
Offline
Iscritto: 25 Set 2009
Messaggi: 2000

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.

Offline
UberDrupalitaliano
Iscritto: 25 Lug 2010
Messaggi: 697

Quimdi é normale?

Offline
DrupalNiubbo
Iscritto: 4 Set 2010
Messaggi: 6

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?

Ritratto di jhl.verona
Offline
Iscritto: 25 Set 2009
Messaggi: 2000

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.

Offline
DrupalNiubbo
Iscritto: 4 Set 2010
Messaggi: 6

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...

Ritratto di jhl.verona
Offline
Iscritto: 25 Set 2009
Messaggi: 2000

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.

Offline
DrupalNiubbo
Iscritto: 4 Set 2010
Messaggi: 6

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.

Offline
UberDrupalitaliano
Iscritto: 25 Lug 2010
Messaggi: 697

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?

Offline
Drupalitaliano
Iscritto: 28 Gen 2009
Messaggi: 220

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"?

Offline
UberDrupalitaliano
Iscritto: 25 Lug 2010
Messaggi: 697

il memory limit è su 128mb di ram.

Offline
Drupalitaliano
Iscritto: 28 Gen 2009
Messaggi: 220

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.

Offline
UberDrupalitaliano
Iscritto: 25 Lug 2010
Messaggi: 697

quindi è un problema di ram secondo te?

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

Ritratto di johnny13
Offline
Drupalitaliano
Iscritto: 12 Mar 2009
Messaggi: 400

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

Offline
UberDrupalitaliano
Iscritto: 25 Lug 2010
Messaggi: 697

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.