WordPress è una piattaforma ottima per quel che riguarda la gestione e la pubblicazione dei post. Si adatta a tutto in vitù anche del fatto che esiste una comunità di sviluppatori enorme, chi sviluppa plugins e chi i temi. Purtroppo, nonostante la sua enorme diffusione, rimane un grosso problema di fondo, è un divoratore di risorse, e di fatto quando un blog creato in questa piattaforma supera i 100 utenti contemporanei cominciano i primi dolori e i primi problemi sono relativi a MySql.
La prima cosa da fare per evitare una crisi di MySql è quella di implementare un po’ di page caching così diminuisce il numero di volte il motore di WP vada ad accedere ai dati reali. Così il vostro server non deve elaborare pagine php e mysql non deve interrogare il DB. Non si tratta di avere dati sempre vecchi ma si può raggiungere un ragionevole compromesso tra offline ed online. Per fortuna Riccardo Galli ha pensato e sviluppato un plugin che ci evita la fatica di andare a perdere ore ed ore nella configurazione di apache, stiamo parlando del plugin WP-Cache, si istalla come un normalissimo plugin ed ha alcuni parametri di configurazione nella sezione Options.
Una volta installata questa plugin bisogna attivarla ed andando nella pagina di configurazione andiamo a cambiare 1 parametro soltanto: Expire time (in seconds) lo impostiamo a 240 secondi (4 minuti) così che le nostre pagine non siamo nè troppo vecchie nè create all’istante. Possiamo monitorare l’andamento della cache con i 2 parametri che compaiono in fondo alla pagina di configurazione. Solitamente per un sito con 200-300 utenti contemporanei (parliamo di un sito molto esteso) le pagine in cache si attestano attorno alle 400-500, dipende molto da quante persone richiedono la stessa pagina.
Già solo con quest’operazione si abbattono i consumi di CPU del 20-30% ma a volte non bastano, dobbiamo scendere di un paio di livelli per ottimizzare al meglio le prestazioni del nostro database. Un database è buono quando è progettato bene! Non posso dire che il DB di WordPress sia ottimo, ma con alcuni accorgimenti si può migliorare senza andare a toccare il codice sorgente di WP e per fortuna esistono molti plugin che ci aiutano a mantenere “pulito” il nostro DB.
Ottimizzare il DB per tutte quelle tabelle che vanno in “OverHead” (in eccedenza) è importante perchè in questo modo il nostro database non cresce a dismisura, soprattutto per quei blog che hanno molti post e molti commenti, attenzione che però l’operazione di ottimizzazione alle volta fa crashare il DB, conviene sempre fare prima un Backup. Esiste un plugin che fa solo l’ottimizzazione del DB si chiama OptimizeDB analizza e con un singolo tasto “optimize now” fa tutta l’operazione per voi. Per i più smanettoni ed esperti di Mysql c’è il plugin Wp-phpmyadmin che vi mette a disposizione tutta la potenza di PhpMyAdmin.
Nel caso di Geekissimo purtroppo tutte queste operazioni non sono bastate, di fatto la RAM occupata è rimasta alta , 3,5 Gb occupati su 4 Gb e le CPu erano largamente occupate dal processo di MySql, che ad ogni singolo accesso prendeva un 0,9% della CPU toccando così punte del 270%-300%, ottenendo un rallentamento generale. A questo punto l’unica cosa da fare è quella di metter mano al Database, prima a livello di creazione di indici (WP ne è esente) e poi a livello di database lato server. Armiamoci di razionalità e pazienza.