• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Transferierte Bytes laut Apache-Log: Ungenau?!

A

Anonymous

Gast
Hallo,
laut meinen Webalizer-Statistiken hab ich mit meiner Webseite aufm Server rund 3 Terrabyte übertragen ?! Das stimmt in 10 kalten Wintern nicht.

Kann es sein dass die Daten in den Logdateien bzgl. der angeblich ausgelieferten Bytes krass ungenau sind?

Gruß
Alex
 

panamajo

Guru
Webalizer wird seit 2002 nicht mehr weiterentwickelt und hat so seine Probleme mit den seitdem geänderten Nutzungen des Internets :mrgreen:

Sind denn die Angaben von webalizer plötzlich falsch oder stimmt evtl. die Konfiguration nicht mit dem Format der Apache Logs überein?
 
OP
A

Anonymous

Gast
Ich denke die zahlen in den Logs stimmen nicht.
ich hab recht große Files zum Download auf der Webseite (etwa 600mb). Wenn jemand jetzt so eine File anklickt zum download und nach der hälfte abbricht: Loggt Apache dann die volle Dateigröße oder weiß der das dass nur die hälfte runtergeladen wurde?

Um auszuschließen dass es an Webalizer liegt werd ich mir mal n Script basteln das die zahlen aus der Log selbst zusammenzählt. Mal schauen.

Aber generell: Sind die zahlen die Apache zum Transfer loggt exakt?

- Alex
 
OP
A

Anonymous

Gast
Es liegt nicht an Webalizer:

Hab soeben 1% einer knapp 700MB großen File via HTTP vom Webserver gezogen und dann den Transfer abgebrochen.
In der Log taucht der Downloadvorgang natürlich auf. Aber da stehen volle 703870599 Bytes drin.
Ergo: Webalizer ist unschuldig.

Nur:

Wie kriegt man Apache dazu den Log-Eintrag nicht beim Beginn des Downloads zu machen und sofort anzugeben dass die ganze Datei runtergeladen wird (was Apache zu dem Zeitpunkt ja nicht 100%ig genau wissen kann), sondern erst nach dem Download, so dass Apache genau weiß wieviele Bytes tatsächlich übertragen wurden?!

Das Problem würde theoretisch auch Awstats und Konsorten betreffen.

Any Ideas?
 

panamajo

Guru
alex0801 schrieb:
Wie kriegt man Apache dazu den Log-Eintrag nicht beim Beginn des Downloads zu machen und sofort anzugeben dass die ganze Datei runtergeladen wird (was Apache zu dem Zeitpunkt ja nicht 100%ig genau wissen kann), sondern erst nach dem Download, so dass Apache genau weiß wieviele Bytes tatsächlich übertragen wurden?!
Gar nicht. HTTP ist zustandslos, d.h. Apache (oder auch ein anderer Webserver) hat keine Möglichkeit festzustellen ob die Gegenseite noch Daten empfängt.

Aus diesem Grund ist HTTP für große Dateien auch denkbar ungeeignet.
 
OP
A

Anonymous

Gast
es gibt ein Modul für Apache das das kann.

Dass ein Webserver zustandlos ist ist klar. Aber es ist doch so:

Der Browser baut für den Dateitransfer eine Socketverbindung auf. Für den Dauer dieser Verbindung hat das ganze einen Zustand, nämlich "Verbindung steh tund Client saugt Daten". Bis zum Verbindungsende bleibt diese Zustandskenntnis den Webserver erhalten. Und tritt der Verbindungsabbruch(-ende) ein, müsste der Webserver ja auch wissen wieviel er übertragen hat. Kann doch nicht so schwer sein da nen Zähler mitlaufen zu lassen.

Jedoch hat Apache da keinen eigenen Zähler und macht sich gar nicht erst die Mühe. Dazu bedarf es erst dem Extra-Modul ... *Link suchen geh*

--> http://httpd.apache.org/docs/2.0/mod/mod_logio.html
 
OP
A

Anonymous

Gast
Prima. Das Modul ist bei mir schon dabei. Scheint "Standard" zu sein.
Einfach statt einem "%B" ein "%O" im LogFormat benutzen. Und schon stimmts ... :)
 
Oben