Con 4D v17 R5, abbiamo migliorato i log di debug aggiungendo metodi e consentendo di tracciare ogni processo in modo indipendente. Con questa versione R, abbiamo fatto un ulteriore passo avanti, distribuendo uno strumento di analisi dei log di debug per aiutarvi a monitorare l’esecuzione dei processi. Potrete vedere quali sono i processi che consumano di più, la catena di chiamate con il relativo tempo di esecuzione e molto altro ancora.
HDI: analizzatore dei log di debug
In questo blog post analizzeremo uno scenario in cui dobbiamo scoprire perché le risposte di un database che serve pagine web dinamiche sono lente.
Alcuni utenti hanno notato che il sito web è talvolta lento, ma non possono fornire ulteriori dettagli. Ci sono diversi modi per indagare, quindi diamo un’occhiata e cerchiamo di capire cosa sta succedendo!
Generare i log di debug
L’analizzatore dei log di debug si basa sul formato dei file di debug log di 4D v14. Quindi, per attivare il logging, basta usare il seguente codice:
//il log di debug attivato con i parametri (opzione 2), il formato file 4D v14 (opzione 4) e la scrittura posticipata (opzione 8)
)
SET DATABASE PARAMETER (Debug log recording;2+4+8
Tenete presente che a partire da 4D v17 R5 è possibile attivare il debug per un singolo processo. Se si sospetta che un particolare processo sia responsabile della latenza, ora è facile e meno dispendioso avviare i log di debug solo per quel particolare processo:
SET DATABASE PARAMETER (Current process debug log recording;2+4+8)
Creare un progetto
L’analizzatore di log di debug gestisce i progetti, che sono un insieme di file di log di debug e una sessione di log di debug.
Quando si apre un database, viene visualizzato un elenco dei progetti memorizzati. È possibile creare un progetto utilizzando il pulsante “Nuovo”. È necessario scegliere la cartella contenente i log di debug o i file che si desidera analizzare, quindi assegnare un nome al progetto.
Tenere presente che, anche se il processo di analisi viene eseguito in modo preventivo, potrebbe richiedere del tempo, a seconda del numero di file da analizzare e dei processori presenti sul computer.
Analisi del progetto
Selezionando il progetto dall’elenco, un riepilogo visualizza le informazioni di base, come l’intervallo dei registri di debug e le linee analizzate. È possibile visualizzare le catene di chiamate, le statistiche e i dettagli del progetto facendo clic sui pulsanti corrispondenti.
CATENE DI CHIAMATA
La schermata delle catene di chiamata mostra l’elenco dei processi con il tempo di esecuzione totale. L’elenco è ordinato in modo da visualizzare i processi che richiedono più tempo nella parte superiore della schermata.
È possibile estendere la catena di chiamata dei processi e vedere l’operazione più dispendiosa a ogni livello. Facendo clic su un processo con il tasto ALT, si estende automaticamente la catena di chiamate più pesante, mentre facendo doppio clic su un’operazione, la si sposta nell’esploratore della catena. È quindi possibile selezionare un livello dall’elenco per aggiornare la visualizzazione dell’elenco gerarchico al livello corrispondente. Per ogni comando selezionato, vengono visualizzati il numero totale di chiamate, la durata totale e la durata media.
Esempio
Nell’esempio seguente, abbiamo cercato i processi e i comandi che consumano di più. Possiamo notare che il comando RELATE MANY SELECTION può richiedere più di un minuto per essere completato, quindi diamo un’occhiata alla sezione delle informazioni dettagliate e vediamo dove è stato chiamato il comando.
Informazioni dettagliate
Selezione dell’intervallo di tempo
La schermata dettagliata presenta una linea temporale dell’attività, visualizzata minuto per minuto. È possibile ingrandire o ridurre la visualizzazione di più o meno dettagli. Questo consente di selezionare l’intervallo di tempo specifico da analizzare. È possibile selezionare solo uno o più minuti spostando i limiti.
Quando si seleziona un nuovo intervallo, viene eseguita un’analisi e i risultati vengono visualizzati nella parte inferiore dello schermo. Evidenziando i periodi di attività elevata, si ha un altro modo per determinare i processi lenti.
Scheda SOMMARIO
La scheda Riepilogo mostra le statistiche generali del tempo di esecuzione del processo per l’intervallo di tempo selezionato. È possibile ridurre le statistiche selezionando un processo dall’elenco.
Scheda Top
La scheda Top visualizza tutte le operazioni registrate con il relativo numero di chiamate e il tempo di esecuzione totale per i processi e l’intervallo di tempo selezionati. L’elenco può essere ridotto utilizzando un filtro per comandi, metodi o metodi membri. Questo è un altro buon modo per determinare i comandi, i metodi e così via che consumano di più.
Seguendo il nostro esempio, abbiamo selezionato un intervallo di tempo e filtrato per comandi. Appare una conferma: il comando RELATE MANY SELECTION è stato usato poche volte e ha richiesto molto tempo. Passiamo al passo successivo per maggiori dettagli.
Operazioni
La scheda Operazioni visualizza tutte le operazioni dettagliate per un singolo minuto isolato dei processi scelti. È possibile ridurre l’elenco o semplicemente evidenziarlo cercando un’operazione. Questa statistica è limitata a un minuto per motivi di prestazioni, quindi non dimenticate di selezionare il minuto in cui volete vedere le operazioni iniziate!
Questo elenco può essere molto utile perché mostra tutte le righe di codice eseguite. È anche possibile ordinarlo in base alla colonna.
Per concludere il nostro esempio, abbiamo cercato il comando RELATE MANY SELECTION , filtrato l’elenco e ordinato in base alla colonna Durata (per mettere le chiamate più lunghe in cima all’elenco). Sembra che le due chiamate più lunghe siano state effettuate con lo stesso campo. Una rapida occhiata alla struttura del nostro database e abbiamo trovato il colpevole: il campo doveva essere indicizzato.
Per concludere
Questo strumento è stato progettato per aiutarvi a trovare i conflitti nel vostro codice e a migliorare le prestazioni del vostro database. Sporcatevi le mani e divertitevi a indagare scaricando l’HDI qui sopra!