Velocizzare Drupal realmente & cache module

12 contenuti / 0 new
Ultimo contenuto
Velocizzare Drupal realmente & cache module

Testavo ora le perfomance di un progetto che ho seguito in drupal.
Mi chiedevo quale fosse il miglior modo per diminuire le interrogazioni a db realmente, e quale per pulire il codice scritto ed otimizzare la pagina.

Mi sono soffermato sul modulo Boost, che sembra buono, ma solo per gli "anonymous visitors". Cioè per tutte le pagine di utenti registrati non interviene, quindi vanno in cache solo le pagine statiche che vengono richieste da sloggati.

Il secondo modulo visionato è stato Memcache, da quel che posso vedere questo andrebbe ad interagire con un server adeguatamente configurato con il demone memcache e il memcached PECL package, che sposterebbero sulla macchina stessa il carico della cache e non più su file o a database. Mi sembra buona questa cosa!
Qualcuno sà suggerirmi qualche altro modulo per la cache delle pagine di utenti registrati e non anonimi? O anche se il modulo memcache serve effettivamente al mio caso? Inoltre vorrei sapere se c'è qualche modulo o metodo compressore e/o ottimizzatore per le view e per l'html generato?

Grazie

Per avere codice pulito puoi usare questo modulo:

http://drupal.org/project/htmlpurifier

Tutorial, guide e moduli per drupal su www.cmswiki.net

grazie, lo provo subito!

@matteo85: non riesco a capire cosa c'entri con al domanda fatta, ma in ogni caso ok :)

@Nick: Memcache SICURAMENTE fa un ottimo lavoro per togliere carico dal DB e spostarlo sulla cache (memcache risiede in ram, quindi tutto stress in meno sul DB e nell'IO disco); inoltre se ci sposti pure le sessioni il DB ringrazia :)
Se devi lavorare sulle performance sicuramente dacci un occhio, ne vale la pena.

Per l'ottimizzazione del codice delle views io ti consiglio semantic views, lo trovo eccezionale se usato bene..

Ciao
Marco
--
My blog
Working at @agavee

Grazie mavimo,

allora memcache ho iniziato ad installarlo in una macchina demo prima di fare "orrori" in web server :)
Sarebbe perfetto spostare il carico in ram e non più su db, magari esiste anche qualcosa che sposta i log? Oppure mi faccio un moduletto che sfrutta memcache e carica tutto in ram.
L'ideale sarebbe poi avere un webserver solo con mamcache e poi fare i puntamenti li..
Il punto al quale vorrei arrivare è una installazione drupal molto veloce adeguata ai carichi del sito/alle tante richieste a db ecc. più smaltisco il carico a db e meglio è.

Semantic views lo conosco già, mi sono trovato bene anche io, un modulo utilissimo. Htmlpurifier invece al contrario di quel che mi sembrava serve solamente a ripulire l'html generato nel caso di chiusure errate di codice o editor insomma.

Quote:
magari esiste anche qualcosa che sposta i log?

a che log ti riferisci? Log di apache? di mysql?

Normalmente l'impiego di memcache come server avviene mettendo macchina (o macchine) per il caching, a cui far accedere i frontend per la generazione delle pagine. Attento ad eventuali problemi di networking, perché ci sono punti in cui l'aumento dei tempi di latenza di rete aumenta i tempi di generazione di pagine anziché ridurli, con successiva esplosione dei processi.

Per quanto riguarda la scalabilità orizzontale (la "VERA" scalabilità) purtroppo con D6 puro non si va molto lontano, già con pressflow le cose migliorano.. per raggiungere l'apice in D7 :D

Ciao
Marco
--
My blog
Working at @agavee

Mi riferisco sempre a db quindi mysql

Per problemi di networking a cosa ti riferisci esattamente? Cioè la linea? O meglio il nodo di smistamento?

Si la scalabilità orizzontale è come dici tu la "vera" dato che ha una espandilità pressoche infinita, mentre quella verticale, è di facile e rapida implementazione/ costosa! :D e non ha una espandibilità infinita di sicuro.

Scusami pressflow, correggimi se sbaglio, dato che è un progetto che ho seguito un pò di tempo fa per un giornale locale, poi dirottato in openpublish, ma non usa varnish? e la replicazione dei db? Drupal 7, non ho avuto modo di approfondirlo ancora bene, ma apparentemente senza dei test ad hoc, mi sembra quasi uguale come prestazioni e come risultato in pagina (parlo di velocità di caricamento, peso finale e solite cosette) a db non lo ho ancora testato, bisognerebbe avere un bel portalino con tanti utenti e vedere cosa combina "sotto carico".

cosa intendi con scalabilità orizzontale?

@ Mavimo

Nick wrote:
Inoltre vorrei sapere se c'è qualche modulo o metodo compressore e/o ottimizzatore per le view e per l'html generato?

Ho risposto in quel modo sulla base di questa domanda: è vero che non è specifico per il views ma si inserisce nei formati di input e pertanto può essere utile in svariate occasioni quando l'esigenza è tenere il codice pulito.

Ciao

Tutorial, guide e moduli per drupal su www.cmswiki.net

@melissa: Significa che agigungi altre macchine bilanciate. Ad esempio se hai un hardware che bilancia il carico tra più server apache invece che avere un unica macchina apache, ma ha senso solo se hai tante richieste che ti saturano la macchina. La verticale è quando aumenti le performance di una macchina.

quindi scalabilità orizzontale se ho capito bene sarebbe una sorta di parallelizzazione dei processi?
la verticale invece è l'opposto.

@melissa: (riporto, perché non saprei esprimermi con parole migliori, se poi servono chiarimenti chiedi pure)

scalabilità di carico: un sistema software dovrebbe aumentare le proprie prestazioni in funzione della potenza di calcolo complessiva che vien dedicata alla sua esecuzione. Per i sistemi distribuiti, di solito, l'enfasi viene posta sulla scalabilità rispetto al numero di processori piuttosto che rispetto alla potenza dei singoli processori impiegati;

La scalabilità di carico può esplicarsi in scalabilità verticale (relativa all'aumento della capacità di elaborazione della singola macchina) e scalabilità orizzontale (relativa all'aggiunta di altre macchine in distribuzione di carico).

@matteo85: anche i filtri di Drupal tengono il markup pulito, poi se non abstano si estendono (come hai giustamente detto) con altri moduli... semplicemente non capivo il senso della risposta in relazione alla domanda... ma molto probabilmente non avevo capito io la domanda ;)

@Nick:

Quote:
Per problemi di networking a cosa ti riferisci esattamente? Cioè la linea? O meglio il nodo di smistamento?

Diciamo che se hai dei nodi con una buona connessione e su cui il traffico generato sulle interfaccie di rete è tale da non fare da collo non da problemi, le problematiche insorgono (per esempio) se hai una sola macchina che fa da caching per le sessioni e 10 che vi accedono.. tutte con cablatura GB, a questo punto anche se le macchine nodi di frontend hanno 1024Mbps di banda, quindi teoricamente potrebbero generare un traffico di 10*1024Mbps per le sessioni sarebbero limitate dal server di caching a 1024Mbbps. Ovivamente sono situazioni molto limite, ma il discorso è.. non sempre il caching conviene :D

Ciao
Marco
--
My blog
Working at @agavee