Il modulo xwla è stato disegnato per i programmi eXtraWay quindi assume di trovarsi nella directory degli eseguibili di un'installazione eXtraWay tipo. Ciò significa che il modulo assume che sia presente nella directory logs, parallela a quella in cui esso si trova, l'insieme dei log da analizzare ed in particolare il file xw.log ed i suoi predecessori ovvero le copie di xw.log che hanno subito rotazione e quindi sono state numerate da 1 in poi.
Questi sono i presupposti sui quali si basa il programma quando viene eseguito senza l'ausilio di alcun parametro a modificarne il comportamento.
All'atto della partenza il modulo deve leggere i files di log da analizzare e presenta dei punti a video per dimostrare l'attività in corso. In tale fase vengono rappresentati come asterischi i punti dei files di log nei quali si rilevano delle parti del file di log non riconosciute o considerate anomale.
Come detto il programma può avvalersi di alcuni parametri tesi a modificarne il comportamento. In particolare essi sono:
La sezione d'esempio chiarirà l'utilizzo di questi parametri.
Vediamo i principali casi d'utilizzo del programma Xwla. In tutti i successivi esempi, il programma è installato nella directory c:
Esecuzione standard, senza parametri
c:\3dInformatica\eXtraWay\prg\xwla
Il programma scandisce la directory c: alla ricerca dei files xw.log, xw1.log, xw2.log, xw3.log e xw4.log. Ovviamente tutti i record registrati verranno considerati nel loro insieme ed ordinati cronoligicamente.
Esecuzione con l'indicazione di un particolare file da scandire.
Nell'ipotesi che un segnalatore fornisca materiale per compiere dei test ed esso sia rappresentato da un solo file dislocato in un punto ben preciso del disco esso può essere indicato per esteso...
c:\3DInformatica\eXtraWay\prg\xwla -f\debug\dati_utente\xw_esempio.log
Il nome del file indicato deve presentare tutto il suo percorso e può avere la denominazione più varia, anche per quanto concerne l'estensione.
Esecuzione con l'indicazione di una distinta directory.
Qualora i files di log fossero stati spostati altrove rispetto alla loro locazione standard o un segnalatore ci avesse fornito più files anziché uno solo, si può indicare una directory nella quale il programma dovrà verificare la presenza dei log da analizzare...
c:\3DInformatica\eXtraWay\prg\xwla -d\temp\utente_prova
In modulo cercherà nella directory indicata, con percorso assoluto, gli stessi files xw.log ecc. ecc. di cui al primo esempio. Il nome della directory può essere indicato con o senza il separatore di directory finale. L'uso di separatori di directory (slash e backslash) è completamente indifferente. L'uso di questo parametro è incompatibile con il parametro -f.
Esecuzione con l'indicazione di un diverso nome di log.
Quando si intende usare Xwla per analizzare altri log, ad esempio quelli prodotti da HighWay Server, si può indicare che il nome di default da usare nella ricerca dei log non è ma un valore diverso...
c:\3dInformatica\eXtraWay\prg\xwla -lhighway
Così facendo il server cercherà di analizzare i files highway<num>.log al posto dei files xw<num>.log.
Come nel caso precedente, anche questo parametro è incompatibile con il parametro -f.
L'esempio appena portat è di fatto poco probabile perché il modulo, con questa sintassi, cerca i files highway<num>.log nella directory logs parallela a quella degli eseguibili (quindi in c:). E' più probabile, infatti, che questo parametro venga usato in combinazione col parametro -d...
c:\3dInformatica\eXtraWay\prg\xwla -d\temp -lhighway
...ad indicare sia il nome dei files sia la loro effettiva dislocazione.
Esecuzione con limitazione temporale.
Il programma viene normalmente utilizzato per comprendere cosa non abbia fuzionato in una determinata occasione o, più generalmente, per stabilire se nell'arco di un certo periodo di tempo, ci siano stati problemi che sono sfuggiti all'attenzinoe degli utilizzatori. Non è quindi infrequente che si analizzino più files nel loro insieme. Che i files siano molteplici o che siano un solo esemplare, l'inizio del file non corrisponde all'inizio delle registrazioni di tutti i server coinvolti (a meno che i logs non fossero stati preventivamente ed intenzionalmente svuotati) quindi può essere utile intervenire tagliando la testa del file più vetusto. In questo modo si stabilisce correttamente un punto di partenza.
Quando quest'operazione non è possibile perché non è bene cambiare il contenuto dei files, il punto d'origine dell'analisi può essere indicato anche per mezzo di un'indicazione cronologica. Indicando una data ed ora minima tutti i record più vetusti verranno ignorati. La data ed ora da indicare hanno formato YYYYMMDDhhmmss.mmm
(Anno, mese, giorno, ore, minuti, secondi, un punto di separazione ed i millisecondi). Essa può essere indicata in tutto o in parte. Faranno parte dell'analisi solo i record rilevati nei files identificati che siano cronolocicamente maggiori o uguali alla data espressa...
c:\3dInformatica\eXtraWay\prg\xwla -t20040518185519.720
Il parametro può essere combinato con qualsiasi precedente parametro esposto. Il valore impostato può essere più vetusto del primo record, ed in tal caso non comporta alcuna reale limitazione, oppure maggiore dell'ultimo record registrato. In quest'ultimo caso il programma non rileva record da analizzare e non può procedere.
All'atto della partenza del modulo esso deve caricare in memoria i record che rileva dai files indicati esplicitamente o implicitamente. Una volta compiuta quest'operazione, che può richiedere qualche attimo se i files sono di ampie dimensioni, il modulo presenta un menù tramite il quale accedere alle funzionalità d'analisi.
Le funzionalità a disposizione sono le seguenti:
In coda al menù viene presentato inoltre lo stato di Verbose ad indicare se avremo anche una rappresentazione a video delle operazioni richieste oppure solo su file.
Vediamo di seguito tutte le funzionalità significative , una ad una...
I comandi disponibili si possono considerare identificativi ed elencativi.
I comandi identificativi servono a scoprire quali ProcessID siano presenti nei logs e, tra di essi, quali presentino delle anomalie.
I comandi elencativi servono a rappresentare in files più semplici degli estratti dei logs analizzati così da poter isolare rapidamente anomalie ed altre informazioni utili.
I comandi Identificativi sono il comando di elencazione dei ProcessID ed il comando che evidenzia quali ProcessID non siano equilibrati in merito alle Questions & Answers.
La rappresentazione dei ProcessID si ha con una semplice elencazione, a video dei numeri di ProcessID identificati nei logs. Non produce output su disco.
La rapresentazione dei Log interrotti indica l'elenco dei ProcessID per i quali non si abbia un corretto ordine e/o equilibrio tra Questions & Answers. Questi due tipi di registrazioni sono quelle che si possono identificare nei log dai codici [Q] e [A]. L'elenco proposto presenta i ProcessID per i quali non c'è equilibrio (Wrong Total) e quelli per i quali non c'è ordine (Wrong ad in dicare che si incontra una Answer prima della corrispondente Question ovvero, più semplicemente, che manca la registrazione della Question in esame).
L'elenco mostra anche i totali delle due registrazioni rilevate.
Esempio:
Pid 01636: Wrong Total (204,203) Pid 03888: Wrong Order, WrongTotal (269,268) Done
La sola indicazione Done mostra che non ci sono disequilibri.
I comandi Elencativi sono quelli che consento di frazionare i log secondo il ProcessID dei moduli coinvolti e produrre dei logs distinti o più direttamente dei log delle sole informazioni salienti quali le operazioni di più lunga durata o quelle che hanno condotto ad un esito negativo.
Tutti i comandi richiedono di indicare in quale directory creare i files di output. La directory proposta è la directory in cui si trovano i logs ovvero l'ultima directory impostata manualmente.
In seguito i comandi richiedono di indicare se l'operazione di analisi ed output debba essere svolta solo ed esclusivamente si un determinato ProcessID, oppure su tutti distintamente o ancora su tutti in forma cumulativa.
Indicando un particolare ProcessID si otterrà l'analisi solo di quello producendo un file avente come nome il numero corrispondente al ProcessID espresso in 5 cifre con estensione .log, indicando di operare su tutti distintamente (All) si produrrà un file di output per ogni ProcessID, con la stessa denominazione indicata precedentemente mentre indicando di operare su tutti i ProcessID in modo cumulativo (Complete) si produce un unico file denominato Complete.log nella directory prescelta. In quest'ultimo caso l'ordine dell'output dipende dall'operazione richiesta.
Il comando elenca le Answer in ordine decrescente di tempo di esecuzione. Tale tempo è valutato in secondi e millisecondi.
Il comando elenca le Answer con esito negativo. L'ordine di tali Answer rimane invariato rispetto ai logs originari quindi rimane in ordine cronologico crescente. In caso di lista cumulativa le elencazioni sono in ordine cronologicoma raggruppate per ProcessID.
Esporta semplicemente le registrazioni per uno o tutti i ProcessID (trattati singolarmente). E' l'unico comando che non comprende la possibilità di esportare in forma cumulativa, operazione che corrisponderebbe alla somma di logs originari.
Compie le stesse operazioni descritte nel paragrafo precedente ma sotto forma di file CSV (Comma Separated Value) così che lo stesso possa essere utilizzato con fogli di calcolo ed altri strumenti simili per compiere operazioni di statistica sulle performance, sul numero di comandi inviati, soprattutto sui comandi simili e così via.
Le colonne esportate assumono il seguente valore:
ac
ed il comando Secondario vale ff
.archivio
del comando. Assume il valore del nome archivio in tutti i comandi in cui esso ha senso ma per alcuni casi (ad esempio in caso di validazione utente) può assumere valore diverso.Come si può notare l'esportazione non produce una colonna con il Time Stamp in cui il comando ha avuto termine.
In particolari condizioni è necessario identificare dove un modulo come eXtraWay Server spreca memoria. In tal caso uno strumento che guidi all' identificazione dell'errore può essere fondamentale. Per questo scopo è stata implementata questa particolare funzione del modulo che si applica attivamente solo su particolari tipi di log.
Innanzitutto chiariamo come si realizzano questi log. Quando si verificano le condizioni per cercare gli sprechi di memoria bisogna attivare il server perché crei i log necessari. Per fare questo si deve indicare nel file xw.conf.xml quanto segue...
<xwconf> ... <section name="debug"> ... <profile type="log.memleack" value="10"/> ... </section> ... </xwconf>
In questo modo si dice al server di stilare il file di log con numerazione '10' nella directory dei logs come Undefined10.log. Si può usare qualsiasi numero ma è bene non usare un numero troppo basso per non confliggere con i log stilati da altri strumenti (Vds. documentazione specifca). Intervenendo sul file xwls.conf.xml (Vds. documentazione) è inoltre possibile dare al file il nome desiderato.
Una volta compiute le operazioni richieste presso il server, il file di log sarà stato alimentato con delle righe che indicano le allocazioni e le liberazioni di memoria. Questi files vanno rinominati in una diversa directory come xw.log e così via (per poi evocare xwla con parametro -d indicando la directory in esame) oppure senza compiere alcun rename evocando xwla con il parametro -f.
A questo punto, con l'esportazione per singolo Pid o complessiva offerta da questa funzionalità vengono isolate le operazioni di allocazione e liberazione della memoria effettuate dai singoli server e riportate in un elenco ordinato nel quale verranno identificati con l'etichettatura...
... [P]
...quelle operazioni che dovessero non trovare corrispondenza (ovvero liberazioni di memoria allocata in operazioni precedenti ed allocazioni effettuate ma non liberate).