Un nuovo strumento a portata di mano per analizzare i log di debug

Tradotto automaticamente da Deepl

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.

blank

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.

blank

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.

blank

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.

blank

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!

Avatar
- Product Owner -Damien Fuzeau è entrato a far parte del team 4D Product nel febbraio 2019. In qualità di Product Owner, si occupa di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo lavoro consiste anche nell'assicurarsi che le implementazioni delle funzionalità fornite soddisfino le esigenze dei clienti.Damien si è laureato all'Università di Nantes in ingegneria del software. Ha trascorso più di 23 anni nella sua precedente azienda, prima come sviluppatore (scoprendo 4D nel 1997), poi come responsabile dell'ingegneria e architetto software. Questa azienda è un partner OEM di 4D e ha distribuito software aziendali basati su 4D per migliaia di utenti, su centinaia di server. Damien è quindi abituato allo sviluppo e alla distribuzione di 4D in un contesto multilingue.