Fehlerhafte Dateiübertragung

Alles, was den Apache betrifft, kann hier besprochen werden.

Fehlerhafte Dateiübertragung

Postby raba34 » 03. July 2010 20:29

Hallo ihr alle,

ich betreibe schon seit einigen Jahren mehrere Server, auf denen der Apache problelos läuft, aber vor zwei Wochen hat sich auf einem der Server mit apache 2.2.15 unter Linux plötzlich etwas ereignet, was für mich bisher völlig unerklärlich ist.

Es passiert folgendes: Fordert ein Klient eine Datei an, so werden ab einer willkürlichen Stelle in der Datei eine Vielzahl von ASCII-Nullen in den Datenfluss eingebaut. Dann geht die Datei normal weiter, bis dann wieder einige tausend ASCII-Nullen erscheinen. Aufgefallen ist es zunächst dadurch, dass PDF-Dateien nicht dargestellt werden konnten, dann auch Bilddateien.

Ich habe diesen Sachverhalt getestet, indem ich eine Datei mit vi erzeugt habe, die nur die Ziffernfolge 01234567890123456789... enthielt (natürlich mit Zeilenstruktur). Nach "lynx localhost/datei.pdf" (.pds, damit lynx fragt, ob ein Download stattfinden soll), sieht die heruntergeladene Datei wie folgt aus: Von Zeile 1 bis Zeile 407 wie im Original, die Zeile 408 beginnt noch mit 012345678 und dann kommen vielleicht 20000 ASCII-Nullen (^@ im vi, \0 im od). Dann geht es regulär weiter bis zur Zeile 865, dann kommen wieder vielen Nullen, dann geht es wieder regulär weiter, ab Zeile 2341 wieder Nullen usw. Interessant ist, dass sich die Nullen *dazwischen* schieben. Hört die Zahlenfolge also z.B. bei 7 auf, dann geht sie nach den Nullen bei 8 weiter.

Lädt man die Datei mehrmals herunter, so hat sie stets eine andere Länge. Da ich die Datei zu Testzwecken auf dem lokalen Rechner herunterlade, Server und Klient also derselbe Rechner sind, scheiden Probleme mit Netzwerkkarte, Router oder Switch aus.

Und zuletzt noch eine Beobachtung: Stellen in httpd in httpd.conf mit "Listen 81" auf Port 81 ein, so ist der Datenverkehr völlig problemlos. Die dann mit "lynx localhost:81/datei.pdf" heruntergeladene Datei ist völlig fehlerfrei.

Ich habe schon mit chkrootkit und anderen Tools gesucht. chkrootkit meldet zwei Prozesse, die mit readdir nicht angezeigt werden können. Die beiden Prozessnummern finden sich aber nicht unter /proc, also vielleicht falscher Alarm?

Wer kann weiterhelfen?

Viele Grüße

Ralph
raba34
 
Posts: 4
Joined: 03. July 2010 18:17

Re: Fehlerhafte Dateiübertragung

Postby Nobbie » 03. July 2010 22:26

Hast Du den Server mal neu gebootet? Das klingt fast so, als wenn irgendwelche "Zombieprozesse" auf Port 80 mitmischen.

Server neu booten, ggf. sogar neu aufsetzen. Festplatten checken inklusive.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Fehlerhafte Dateiübertragung

Postby raba34 » 04. July 2010 08:47

Dreimal neu gebootet und den Apache 2.2.11 durch den neuesten 2.2.15 ersetzt. Keine Wirkung.

Das es ein Zombie-Prozess sein könnte, meine ich auch bald, aber wie finde ich ihn heraus? chkproc
liefert reproduzierbar das folgende Ergebnis:

$ ./chkproc -v
PID 1033(/proc/1033): not in getpriority readdir output
PID 1117(/proc/1117): not in getpriority readdir output
You have 2 process hidden for readdir command

aber weder unter /proc noch nach "ps ax" gibt es Prozesse mit den Nummern 1033 oder 1117.

Was tun?

Ralph
raba34
 
Posts: 4
Joined: 03. July 2010 18:17

Re: Fehlerhafte Dateiübertragung

Postby Nobbie » 04. July 2010 09:45

raba34 wrote:Was tun?


Wenn ich ehrlich bin - ich würde den ganzen Server plattmachen (vorher natürlich Backup der wichtigen Daten, htdocs, MySQL Data usw.) und dann sowohl ein neues Linux wie auch Apache usw. aufspielen.

Man kann ja noch nicht einmal festmachen, ob es an Apache liegt, ob es am Kernel liegt, ob TCPIP zerschossen ist - ich habe hier keine Anhaltspunkte, wo man suchen soll.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Re: Fehlerhafte Dateiübertragung

Postby raba34 » 04. July 2010 10:23

Das werde ich auch machen.

Mir geht es um eine Übergangslösung, damit meine User so lange noch vernünftig arbeiten können, bis der neue Rechner eingerichtet ist.

Außerdem interessiert es mich natürlich, woran so etwas liegen kann.

Ralph
raba34
 
Posts: 4
Joined: 03. July 2010 18:17

Re: Fehlerhafte Dateiübertragung

Postby raba34 » 04. July 2010 11:29

Ein weiteres Detail (falls es hier jemanden interessiert): Der erste Nullenblock wird stets nach exakt 2^16=65536 korrekt übertragenen Zeichen (einschließlich jeweils 1 Zeichen für LineFeed) eingefügt.

Für die weiteren Nullenblöcke gibt es keine feststellbare Regel.

Ralph
raba34
 
Posts: 4
Joined: 03. July 2010 18:17

Re: Fehlerhafte Dateiübertragung

Postby Nobbie » 04. July 2010 12:05

raba34 wrote:Ein weiteres Detail (falls es hier jemanden interessiert): Der erste Nullenblock wird stets nach exakt 2^16=65536 korrekt übertragenen Zeichen (einschließlich jeweils 1 Zeichen für LineFeed) eingefügt.


Das dachte ich mir fast - das sieht nach eine Pufferproblem aus. Da wird ein Puffer mit Nullen aufgefüllt - aber warum?

Ich weiß ja auch nichts über die Anwendung, aber vielleicht laufen die irgendwelche Cachings o.ä. mit und die haben einen Bug (vielleicht nach einem Kernel Update).
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 24 guests