New Relic APM è un potente strumento che scava nel funzionamento interno di un sito WordPress per individuare i plugin template file di temi, query sul database, chiamate esterne o errori di codice che causano problemi di prestazioni sui siti web dei nostri clienti.
In Kinsta, i nostri clienti sono liberi di aggiungere la propria licenza New Relic in modo da poter godere della potente visibilità che questo strumento fornisce.
Se il vostro fornitore di hosting non offre l’integrazione di New Relic, potete impostarla voi stessi se il vostro sito è ospitato in un ambiente privato autogestito.
Tuttavia, far funzionare New Relic è solo l’inizio. Se non avete mai usato New Relic APM (e forse anche se l’avete fatto), potreste avere difficoltà a ottenere il massimo da questo potente strumento. In questo tutorial, vi mostreremo come usare New Relic APM per diagnosticare e risolvere i problemi di performance sul vostro sito WordPress.
Pronti? Diamoci da fare!
Una Rapida Panoramica di New Relic APM
Cos’è New Relic APM? Per i nostri scopi, è perfetta la seguente definizione:
New Relic APM è un’applicazione web che fornisce informazioni dettagliate sulle prestazioni del vostro sito WordPress.
Potete installare New Relic aggiungendo un’estensione a PHP. Questa estensione intercetta tutte le richieste processate da PHP e quindi invia tali informazioni alla dashboard di New Relic. New Relic quindi organizza tali informazioni in una serie di diagrammi e grafici che potete utilizzare per individuare il problema di prestazioni del vostro sito web. È importante rilevare che New Relic non è supportato su HHVM.
Facciamo un rapido tour tra le principali visualizzazioni dei dati di New Relic.
Panoramica
La panoramica fornisce una istantanea veloce delle prestazioni complessive del vostro sito web. Da questa schermata non individuerete problemi specifici, ma la pratica compilation che mostra come PHP, MySQL e le chiamate esterne lavorano insieme può indirizzarvi nella giusta direzione.
Scoprite di più sulla pagina della panoramica di APM.
Transazioni
La scheda Transazioni è la scheda più utile di New Relic.
Imparate ad utilizzare la scheda Transazioni e sarete in grado di indagare in profondità le transazioni lente e identificare le chiamate al database, le risorse esterne e le strozzature del codice che rallentano il vostro sito. Di particolare interesse nella vista delle transazioni è l’elenco delle transazioni lente. Per visualizzare questo elenco, scorrete fino alla fine della scheda Transazioni e cercate nella parte inferiore destra della pagina.
Qui troverete un elenco delle transazioni più lente acquisite da New Relic. Non ci soffermiamo oltre su questa sezione in questo momento, ma tra poco vi spiegheremo come utilizzarla per diagnosticare i problemi del vostro sito web.
Scoprite di più sulla pagina delle transazioni di New Relic APM.
Hook di WordPress
La scheda degli hook di WordPress fornisce una visualizzazione del tempo impiegato da tutte le funzioni PHP attivate tramite gli action hook di WordPress. Queste informazioni possono essere utili a sviluppatori esperti che possono utilizzarle per andare a ritroso partendo da un hook sovraccarico per identificare le funzioni attivate dall’hook.
Plugin e Temi di WordPress
La scheda Plugin e Temi di WordPress mostra quanto tempo di elaborazione PHP impiegano i plugin e il tema attivo. Se un singolo plugin o il tema del vostro sito sta impiegando una quantità enorme di tempo, questa pagina può aiutarvi a individuare rapidamente il plugin o il tema che causa il problema.
Un avvertimento è d’obbligo: la scheda Plugin e temi di WordPress in New Relic è la più facile da utilizzare in modo improprio.
Quando si esamina un problema di prestazioni di un sito web, si può avere la tentazione di controllare prima questa scheda e semplicemente disattivare il plugin che richiede più tempo. Tuttavia, fare ciò significa ignorare le preziose informazioni che trovate in altre schede di New Relic. È un po’ come curare i sintomi piuttosto che approfondire e andare alla ricerca della causa principale.
I plugin possono girare lentamente a causa di un problema di configurazione errata, ad esempio un plugin di gestione delle iscrizioni può essere eseguito lentamente perché si sta utilizzando un numero di porta SMTP errato. Oppure un plugin potrebbe non essere stato disinstallato correttamente. Questo è il tipo di informazioni che probabilmente potreste ottenere analizzando in profondità una transazione lenta all’interno della scheda Transazioni, e non risolverete mai semplicemente disattivando il plugin più lento come riportato da New Relic.
Quindi abituatevi ad utilizzare questa scheda, ma senza pensare di poter fare a meno del resto delle informazioni fornite da New Relic.
Database
La scheda database vi consente di identificare le tabelle del database e i tipi di query che richiedono più tempo. New Relic applica queste informazioni alle transazioni che eseguono quelle query. È possibile utilizzare queste informazioni per identificare le tabelle del database che potrebbero richiedere un’ottimizzazione e i template file che stanno appesantendo oltre misura il database.
Servizi Esterni
La maggior parte dei siti WordPress si basa su una serie di servizi esterni:
- Gli aggiornamenti di plugin, temi e core sono forniti da wordpress.org e dagli sviluppatori di plugin e temi.
- Molti plugin si integrano con API di terze parti, come il plugin di ottimizzazione delle immagini Smush di WPMU DEV (smushpro.wpmudev.org dallo screenshot qui sopra).
- I plugin di chat sono generalmente alimentati da servizi esterni.
- Molti siti sono integrati con piattaforme di social media per presentazione e prestazioni ottimali quando i contenuti sono condivisi su queste reti.
Quando uno di questi servizi esterni smette di rispondere in modo tempestivo, può portare al crash dell’intero sito web.
La scheda dei servizi esterni vi consente di individuare rapidamente i servizi esterni che impiegano più tempo. Potete quindi utilizzare tali informazioni per determinare se si tratta di un problema di velocità (il servizio risponde lentamente) o di quantità (ci sono troppe chiamate alla fonte esterna), permettendovi di operare per la risoluzione del problema.
Analisi degli Errori
La scheda di analisi degli errori riporta gli errori PHP riscontrati durante il caricamento del sito WordPress. Gli errori sono raggruppati in classi, in modo da poter vedere rapidamente quanti tipi di errori vengono generati. Gli errori sono anche ricondotti alle transazioni effettive che li hanno generati. Se selezionate un errore specifico, potrete visualizzare una traccia dello stack completo della transazione che ha generato l’errore.
Pensate all’analisi degli errori come a un registro degli errori PHP meglio organizzato. Può rivelarsi prezioso quando si tenta di rintracciare i file che generano errori PHP e le transazioni in cui si verificano tali errori.
Debug delle Pagine che Caricano Lentamente
Il problema più frequente per il cui debug il nostro team utilizza New Relic è dato da una pagina o un processo specifico che impiega molto tempo. Quando ciò si verifica, la scheda Transazioni in New Relic APM è quasi sicuramente il primo posto dove andare a cercare.
La procedura che dovrete seguire per individuare una pagina a caricamento lento è piuttosto semplice:
- Duplicate la transazione lenta.
- Cercate la transazione nell’elenco delle transazioni lente in New Relic.
- Esaminate il riepilogo della transazione e tracciate i dettagli per determinare cosa genera la prestazione lenta.
Vediamone un esempio e come New Relic può essere utilizzato per diagnosticare questo problema.
Passo 1: Duplicare la Transazione
Vediamo un esempio. Il nostro cliente registra un caricamento lento ogni volta che viene caricato un singolo post del blog. Tutte le altre pagine vengono caricate normalmente, ma i singoli post impiegano diversi secondi per caricare.
Quindi, il primo passo è duplicare il problema. In questo caso, ciò significa visitare diverse volte un singolo articolo del blog per essere certi che New Relic acquisisca i dati necessari.
Nota: se il vostro sito utilizza la cache di pagina, che è integrata nella nostra piattaforma Kinsta, dovrete svuotare la cache tra un caricamento e l’altro della pagina. Altrimenti finirete per caricare la pagina dalla cache piuttosto che forzare WordPress a generare la pagina.
Passo 2: Trovate la Transazione Lenta
Dopo aver duplicato la transazione lenta, andate su New Relic e selezionate la scheda Transazioni. Quindi scorrete verso il basso fino a visualizzare l’elenco delle transazioni lente, nella parte in basso a destra della dashboard di New relic.
Fate clic sulla transazione di cui stai eseguendo il debug per visualizzare i dettagli.
Passo 3: Rivedete il Riepilogo delle Transazioni e i Dettagli della Traccia
Dopo aver selezionato la transazione, verrà visualizzato un riepilogo della transazione stessa.
Il riepilogo vi permette di visualizzare un’istantanea dei componenti che hanno contribuito ad allungare il tempo di elaborazione della transazione. Nel caso della nostra transazione di esempio, una chiamata a una risorsa esterna, www.googleapis.com, è responsabile di 5.000 millisecondi di una transazione che ha richiesto un totale di 5.350 millisecondi per essere completata.
Sebbene si tratti di informazioni utili, la scheda che riporta i dettagli della traccia fornirà i dati necessari per capire esattamente cosa sta succedendo.
La scheda dei dettagli traccia fornisce una cascata gerarchica dettagliata che mostra la funzione, le query del database e le chiamate esterne elaborate da PHP mentre genera la pagina.
Nel caso della nostra transazione di esempio, i dettagli della traccia rivelano che una è chiamata a un URL di Google Analytics a rallentare il processo. Se lavoriamo a ritroso partendo da quella richiesta, vediamo che viene eseguita una funzione PHP chiamata gapp_get_post_pageviews
. Una rapida ricerca su Google per quella transazione rivela che fa parte del plugin Google Analytics Post Pageviews. Questo plugin è installato sul sito e utilizzato per aggiungere un contatore di visualizzazioni a una barra fissa.
New Relic ci ha appena permesso di individuare il contatore di visualizzazioni nella barra fissa come causa principale del caricamento lento degli articoli singoli del blog in questione. Ora il proprietario di questo sito sa esattamente quale componente scegliere come target per risolvere il problema.
Correzione della Lentezza Generale
Il secondo tipo più frequente di problema che interessa i nostri clienti si verifica quando è l’intero sito che carica lentamente. Quando ogni transazione richiede molto tempo per essere eseguita, probabilmente sta succedendo una di queste tre cose:
- Il sito è affamato delle risorse del server.
- Un plugin o il tema attivo sta causando problemi.
- Il database del sito sta annaspando per tenere il passo con la frequenza delle query.
In Kinsta, i problemi di risorse del server sono rari, poiché le nostre macchine virtuali scalabili sono in grado di gestire quantità variabili di carico. Tuttavia, se il sito è affamato di CPU o RAM, questo può causare una lentezza complessiva che New Relic non attribuirà su nessuna singola risorsa. Quindi, se notate una lentezza generale e New Relic indica che ogni parte del sito sta contribuendo alla situazione, controllate il carico sul vostro server per verificare che non sia dovuto a una carenza di risorse.
Se il vostro sito ha accesso a molte risorse del server, per diagnosticare la lentezza complessiva controllate le schede Plugin e Temi di WordPress, quella Servizi esterni e la scheda Database.
Ecco alcuni casi di lentezza generale che possono essere diagnosticati utilizzando ciascuna di queste schede.
Lentezza Generale Causata da un Plugin
Quando un plugin causa una lentezza generale, i sintomi variano in base all’attività che il plugin sta svolgendo. Tuttavia, in molti casi, scoprirete che un plugin lento influisce su ogni pagina di un sito WordPress. Nel caso del sito i dati vedete illustrati nell’immagine qui sotto, la lentezza generale si osserva in ogni pagina del front-end del sito.
Ecco cosa aveva da dire New Relic sulle prestazioni dei plugin nel sito.
Si vede subito che il plugin adinjector sta impiegando un tempo oltre 15 volte superiore al secondo plugin più lento.
Quando vedete dati come questi potreste essere tentati di disattivare immediatamente il plugin in quanto programmato in malo modo o in qualche modo inefficace. Anche se a volte è così, non è sempre questo il caso. La configurazione errata del plugin, la lentezza del database o le risorse esterne lente a rispondere possono far perdere molto tempo a un plugin.
Quindi, quando vedete un plugin che risponde lentamente, è sempre una buona idea controllare altre schermate di New Relic per avere maggiori informazioni. Le transazioni, i database e le risorse esterne dovrebbero essere tutti verificati prima di decidere che la disattivazione del plugin sia la migliore o unica via da seguire.
Lentezza Generale Causata da Servizi Esterni
Se un sito dipende da una chiamata a un servizio esterno per generare pageview e tale servizio smette di rispondere o impiega molto tempo a rispondere, il risultato può essere un sito WordPress che interrompe completamente il caricamento.
L’immagine qui sopra è tratta dallo stesso sito che ha prodotto lo screenshot dei plugin lenti più sopra. Come si può vedere, esiste un singolo servizio esterno che contribuisce in misura considerevole al tempo totale trascorso in attesa di servizi esterni.
Questo caso mostra perché è necessario visualizzare le informazioni in combinazione, prima di arrivare ad una conclusione. Il servizio chiamato in questo caso è lo sviluppatore del plugin identificato nell’ultimo passaggio.
Questa informazione aggiunge qualche dettaglio in più alla situazione. Non è il codice del plugin a generare il problema. Invece, sembra che il plugin effettui molte chiamate al sito web dello sviluppatore e queste chiamate, considerate nel loro insieme, stanno allungando di molto il tempo di elaborazione.
Se facciamo un ulteriore passo in avanti e guardiamo una transazione lenta per questo sito, ci accorgiamo che questa chiamata esterna sembra controllare lo stato della licenza del plugin in questione, il che suggerisce che la licenza di questo particolare plugin potrebbe essere scaduta.
In ogni caso, ora siamo in grado di avvisare il proprietario di questo sito che il plugin adinjector causa prestazioni lente e che le prestazioni lente sono dovute alle ripetute chiamate al sito web dello sviluppatore per la verifica dello stato della licenza del plugin.
Lentezza Generale Causata da un Database Sovraccaricato
Un database scarsamente ottimizzato può causare una lentezza generale di un sito WordPress. Un’ottimizzazione che consigliamo sempre è convertire il database da MyISAM a InnoDB. In New Relic, la lentezza relativa a questo database verrà probabilmente visualizzata in due punti:
- Innanzitutto, vedrete una grande quantità di attività MySQL nella panoramica.
- In secondo luogo, nella scheda database vedrete una o più tabelle del database che richiedono molto tempo.
Osservando la schermata panoramica, un sito con un database in difficoltà potrebbe assomigliare a questo:
Per capire meglio quale tabella del database o quale query stia causando il problema, andate alla scheda database.
La scheda database indicherà la tabella e il tipo di query che impiegano più tempo. Se selezionate una delle voci dell’elenco, è possibile visualizzare altri dettagli, incluse alcune query di esempio.
In questo caso, i dati puntano il dito sui dati a caricamento automatico presenti nella tabella wp_options. Quasi sicuro, una rapida analisi della tabella wp_options conferma che quasi 250 MB di dati vengono caricati automaticamente da questa tabella, rendendo questo sito un candidato naturale per una manutenzione e per l’ottimizzazione del database. Date un’occhiata al nostro post più approfondito su come ottimizzare la tabella wp_options e i dati a caricamento automatico.
E Ora Forza col debug!
Una volta che sapete come usarlo, New Relic può essere un valido strumento per identificare i colli di bottiglia delle prestazioni PHP sul vostro sito WordPress. Per ottenere il massimo da New Relic è fondamentale conoscere WordPress, capire le informazioni che ogni scheda riporta e vedere come tutte le informazioni sono correlate tra loro.
Abbiamo un altro caso di studio interessante sull’argomento cui dovreste dare un’occhiata: Debug delle Prestazioni di WordPress – Un Elenco di Cose che Possono Succedere
Avete qualche altro suggerimento per WordPress e New Relic? Ci piacerebbe leggerli qui sotto nei commenti.
Lascia un commento