Le informazioni contenute in questa pagina fanno riferimento alla versione WIN32 del mitico programma Webalizer.
La versione interessata e' disponibile all'indirizzo http://www.medasys-lille.com/webalizer/, mentre all'indirizzo http://www.webalizer.org potete trovare la versione originale.
Chi ha provato ad utilizzare intensamente questo programma avra' certamente notato che se si attiva la
risoluzione dei nomi host il tempo di esecuzione aumenta spaventosamente fino a renderlo inutilizzabile nel caso di siti con traffico elevato.
Considerando che il tempo medio di risoluzione di un host e' di circa 5 secondi se il sito ha qualche milione di hits ogni giorno,
200/300 MByte di log e quindi 10000/20000 host unici, ci si rende subito conto che occorre qualche decine di ore prima di poter generare le statistiche di accesso.
Se poi si devono elaborare i file di log di qualche centinaio di siti web la risoluzione dei nomi host e' improponibile.
Nella versione WIN32 anche se si imposta nel file di configurazione il numero di processi (DNSChildren)
al valore massimo (100) il risultato non cambia in quanto tale versione e', imposto a livello di codice sorgente, a Thread unico.
Per come e' strutturato il codice sorgente di Webalizer non e' possibile apportare delle modifiche senza stravolgere il programma originale.
Infatti la risoluzione del nome host avviene durante la lettura della singola riga di log. La soluzione dovrebbe procedere alla risoluzione dei nomi host
solo dopo aver letto tutte le righe di log attivando il numero di Thread specificato nel file di configurazione.
Tuttavia, questa soluzione comporta la modifica del codice sorgente con successiva ricompilazione ogni volta che viene rilasciata una nuova versione.
Esiste una soluzione più semplice ed indolore. Webalizer memorizza i nomi di host gia' risolti in un file di testo denominato, in genere,
dns_cache.db. La soluzione consiste quindi nel far pre-processare il file di log di interesse da un programma
capace di generare il file di cache. In questo modo l'esecuzione di Webalizer sullo stesso file di log non ha bisogno di interrogare il DNS dato che i nomi host sono già risolti.
Questo programma e' appunto PreWebalizer
|