Michael Schröpl: IP's von access_log in bestimmtem Zeitfenster extrahieren

Beitrag lesen

Hi Andreas,

aber vermutlich wird Michael Schröpl wie ich ihn kenne noch das ein oder andere As im Ärmel haben

was hältst Du davon, Deine bisherige Architektur über den Haufen zu werfen und sie komplett Deiner Aufgabenstellung unterzuordnen?

a) Du hast einen ständig fließenden Datenstrom, in Form von Ausgaben in ein Logfile.
b) Du hast zu bestimmten Zeitpunkten die Anforderung, Auswertungen _auszugeben_.

Aber niemand hat verlangt, daß die _Berechnung_ der Auswertung erst zum Zeitpunkt der Ausgabe erfolgen muß!

Also:
1. Installiere einen daemon, der sich mit "tail -f" an das besagte Apache-Logfile hängt und
   bei jeder ankommenden Zeile _sofort_ inkrementell die entsprechende Auswertung vornimmt.
2. Bringe diesem daemon bei, auf bestimmte Kommunikations-Signale zu reagieren, z. B.
   a) ein Signal, um das aktuelle Auswertungs-Zwischenergebnis auszuliefern und
   b) ein Signal, um seinen aktuellen Datenbestand (Hash-Tabelle) zu löschen.
(Wie Du diese IPC im Einzelnen löst - z. B. über sockets - ist dann Deine Entscheidung.)

Genau wie bei der Forum-Suchmaschine besteht der Trick darin, die Berechnungsleistung nicht erst während der Wartezeit des Anwenders zu investieren, sondern schon lange vorher. Das verbessert die Antwortzeit einer Dialog-Anforderung dramatisch.

Auch die Architektur des Self-Forums spiegelt sich in dieser Architektur-Skizze teilweise wider: Beide Programme wollen ihre Eingabedaten möglichst nur einmal auswerten, aber beliebig vielen Anfragen hochperformant antworten können.

Und in gewisser Weise ist dieses Konzept auch in den inkrementellen Auswertungs-Läufen des Webalizers enthalten (welcher allerdings seine Zwischenergebnisse in verdichteter Form auf die Festplatte zurück schreibt, statt permanent zu laufen).

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
(sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
 => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.