L'ottimizzazione delle prestazioni inizia con l'identificazione delle metriche chiave, solitamente correlate alla latenza e alla velocità effettiva. L'aggiunta del monitoraggio per acquisire e monitorare queste metriche espone i punti deboli dell'applicazione. Con le metriche, è possibile eseguire l'ottimizzazione per migliorare le metriche sul rendimento.
Inoltre, molti strumenti di monitoraggio ti consentono di configurare avvisi per le tue metriche, in modo da ricevere una notifica quando viene raggiunta una determinata soglia. Ad esempio, potresti configurare un avviso per ricevere una notifica quando la percentuale di richieste non riuscite aumenta di oltre il X% rispetto ai livelli normali. Gli strumenti di monitoraggio possono aiutarti a identificare le prestazioni normali e a rilevare picchi insoliti di latenza, quantità di errori e altre metriche chiave. La possibilità di monitorare queste metriche è particolarmente importante durante i periodi di tempo critici per l'attività o dopo l'invio di nuovo codice in produzione.
Identifica le metriche di latenza
Assicurati di mantenere la UI il più reattiva possibile, tenendo presente che gli utenti si aspettano standard ancora più elevati dalle app mobile. Anche la latenza deve essere misurata e monitorata per i servizi di backend, in particolare perché può causare problemi di throughput se non viene controllata.
Le metriche suggerite da monitorare includono:
- Durata della richiesta
- Durata della richiesta con granularità del sottosistema (ad esempio chiamate API)
- Durata job
Identifica le metriche di throughput
La velocità effettiva è una misura del numero totale di richieste gestite in un determinato periodo di tempo. Il throughput può essere influenzato dalla latenza dei sottosistemi, quindi potresti dover ottimizzare la latenza per migliorare il throughput.
Ecco alcune metriche che ti consigliamo di monitorare:
- Query al secondo
- Dimensione dei dati trasferiti al secondo
- Numero di operazioni di I/O al secondo
- Utilizzo delle risorse, ad esempio l'utilizzo della CPU o della memoria utilizzata
- Dimensioni del backlog di elaborazione, ad esempio Pub/Sub o numero di thread
Non solo la media
Un errore comune nella misurazione delle prestazioni è considerare solo il caso medio. Sebbene sia utile, non fornisce informazioni sulla distribuzione della latenza. Una metrica migliore da monitorare sono i percentili di rendimento, ad esempio il 50°, il 75°, il 90° e il 99° percentile per una metrica.
In genere, l'ottimizzazione può essere eseguita in due passaggi. Innanzitutto, ottimizza per la latenza del 90° percentile. Poi, considera il 99° percentile, noto anche come latenza di coda: la piccola parte di richieste che richiedono molto più tempo per essere completate.
Monitoraggio lato server per risultati dettagliati
In genere, per il monitoraggio delle metriche è preferibile la profilazione lato server. Il lato server è solitamente molto più facile da strumentare, consente l'accesso a dati più granulari ed è meno soggetto a perturbazioni dovute a problemi di connettività.
Monitoraggio del browser per una visibilità end-to-end
Se l'integrazione dell'API Google Ads fornisce un frontend web agli utenti finali, la profilazione del browser può fornire ulteriori informazioni sull'esperienza utente. Può mostrare quali pagine hanno richieste lente, che puoi poi correlare al monitoraggio lato server per ulteriori analisi.
Google Analytics fornisce anche un monitoraggio immediato dei tempi di caricamento delle pagine nel report Tempi pagine di Analytics. In questo modo, puoi ottenere diverse visualizzazioni utili per comprendere l'esperienza utente sul tuo sito, in particolare:
- Tempi di caricamento della pagina
- Tempi di caricamento dei reindirizzamenti
- Tempi di risposta del server
Monitoraggio nel cloud
Esistono molti strumenti che puoi utilizzare per acquisire e monitorare le metriche sul rendimento della tua applicazione. Ad esempio, puoi utilizzare Google Cloud Logging per registrare le metriche sul rendimento nel tuo progetto Google Cloud, quindi configurare le dashboard in Google Cloud Monitoring per monitorare e segmentare le metriche registrate.
Consulta la guida al logging per un esempio di intercettatore di logging gRPC personalizzato scritto per la libreria client Python. In questo esempio, l'intercettatore chiama logger.log_struct() per inviare un dizionario Python di dati di log strutturati a Cloud Logging, che Cloud Logging archivia nel campo jsonPayload della voce di log:
logger.log_struct({
"method": method_name,
"elapsed_ms": elapsed_milliseconds,
"is_fault": is_fault,
})
Con questi dati disponibili in Google Cloud, puoi creare metriche sui dati registrati per ottenere visibilità sulla tua applicazione tramite Google Cloud Monitoring. Segui la guida alle metriche basate su log definite dall'utente per creare metriche utilizzando i log inviati a Google Cloud Logging.
In alternativa, puoi utilizzare le librerie client di Cloud Monitoring per definire le metriche nel codice e inviarle direttamente a Monitoring, separatamente dai log.
Esempio di metriche basate su log
Supponiamo che tu voglia monitorare il valore is_fault per comprendere meglio le percentuali di errore nella tua applicazione. Poiché logger.log_struct() scrive campi di dizionario strutturati in jsonPayload in ogni voce di Cloud Logging, puoi creare una metrica contatore denominata ErrorCount con un filtro che corrisponde alle richieste non riuscite, ad esempio jsonPayload.is_fault = true.
In Cloud Logging, le etichette ti consentono di raggruppare le metriche in categorie in base ad altri dati nei log. Puoi configurare un'etichetta STRING denominata Method nel campo jsonPayload.method inviato a Cloud Logging per suddividere il conteggio degli errori in base al metodo dell'API Google Ads.
Con la metrica ErrorCount e l'etichetta Method configurate, puoi creare un nuovo grafico in Cloud Monitoring per monitorare ErrorCount, raggruppato per Method.
Avvisi
In Cloud Monitoring e in altri strumenti è possibile configurare policy di avviso che specificano quando e come gli avvisi devono essere attivati dalle metriche. Per istruzioni sulla configurazione degli avvisi di Cloud Monitoring, segui la guida agli avvisi sulle metriche basate su log.