PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Webserver schmiert dauernd ab :(



firefox2k
18.03.03, 11:00
Liebe Linux-Gemeinde,

ich habe vor einiger Zeit einen Webserver mit folgenden Eckdaten aufgstellen lassen:
AMD Athlon XP 2000, 512 DDR, 60 gig IDE Platte.
Software:
SUSE 7.3, als Admin-Programm Confixx Pro

Aus irgendeinem Grund schmiert dieser Rechner jedoch öfters ab, ich kann dann nur per Konsole die httpd Dienste killen und den Apache resetten daß er wieder läuft. Auf der Suche nach dem Fehler habe ich mir per TOP die Systemauslastung anzeigen lassen (einen Screenshot hiervon habe ich angehängt). Hierbei ist mir aufgefallen, dass von meinen 512 MB RAM fast alles aufgebraucht ist obwohl der Rechner eigentlich gerade gar nichts macht! Leider bin ich nun an einer Stelle angelagt, wo ich mit meinem windows-Wissen nicht mehr weiter komme und keine Ahnung habe wo ich nach dem Fehler suchen könnte.
Wenn ihr mir sagt was ich wo abfragen soll um der Sache auf die Schliche zu kommen, dann poste ich die entsprechenden Details hier im Thread.
In der Logdatei habe ich sehr oft diesen Eintrag gefunden:

Feb 23 09:46:26 linux kernel: Out of Memory: Killed process 14385 (httpd).

Mein Ziel: Herausfinden was mir so viel Speicher auffrisst! ;)

Über Anregungen bin ich sehr dankbar!

Viele Grüße,

Jörg

Jorge
18.03.03, 11:33
Als erstes ein par Worte zur Speicherverwaltung unter Linux:

Freier Speicher ist unnützer Speicher! Linux verwendet so viel Ram wie möglich für alle möglichen Daten. Ein Beispiel um es besser erklären zu können:


thsfs-lx:~ # free
total used free shared buffers cached
Mem: 127164 121360 5804 0 53104 10348
-/+ buffers/cache: 57908 69256
Swap: 265064 9564 255500
thsfs-lx:~ #


Total zeigt 127164kB verfügbaren Arbeitsspeicher, davon sind 121360kB belegt und 5804kB frei. Von den 121360kB sind 10348kB gecachete Daten. Was cachet Linux? Gut Frage! Linux versucht so Sinnvoll wie möglich Daten im RAM vorzuhalten, d.h. z.B. daß ein Großteil des Caches als Festplatten Cache genutzt wird, da RAM wesentlich schneller ist als die Festplatte selbst. Der Kernel liest also immer ein paar Blöcke mehr von der Festplatte als nötig, in der Hoffnung, daß diese Daten als nächstes benötigt werden und diese dann aus dem RAM/Cache geliefert werden können. Das ganze zielt also auf eine Perfomanceoptimierung ab. Sollte der RAM knapp werden für neue Prozesse, gibt der Kernel automatisch entsprechend viel Cache frei, damit das Programm/Prozess geladen werden kann.

Welche Kernel verwendest Du? Den original SuSE 7.3 Kernel? Ich weiß jetzt nicht welcher der original SuSE 7.3 Kernel ist, aber es gab mal größe Probleme mit dem oben beschriebenen Prozess- Speichermanagement. Ein aktueller Kernel (2.4.20 bzw 2.2.25 wenn Du einen 2.2er Kernel verwendest) wäre mit Sicherheit eine gute Idee.

Was natürlich nicht gut ist, ist folgendes:


Feb 23 09:46:26 linux kernel: Out of Memory: Killed process 14385 (httpd)

Das macht der Kernel nur dann, wenn er keinen Speicher mehr hat den er freigeben kann um Systemkritischen Prozessen das 'überleben' zu ermöglichen, wenn diese RAM brauchen. Richtiger ist in diesem Zusammenhang, das nicht der Kernel sondern der init Prozess diese Exekution anordnet und der Kernel das dann eben ausführt.

Weiters wundert mich die Anzahl der sichtbaren popper Prozesse, werden da soviele Mails abgerufen?

Noch eine Information zu dem Zombie Prozess: http://www.lfs-tipps.de/sections.php?op=viewarticle&artid=61

Woran sich die Maschine jetzt definitiv 'verschluckt' kann anhand der vorliegenden Informationen nicht wirklich gesagt werden. Ich habe das Kernel Prozess- Speichermanagement in der Vermutung, es könnte allerdings auch matschiger RAM sein. Liefer mal ein wenig mehr von der /var/log/messages, die Meldungen vor und nach dem out of memory sind hier interessant.
Ebenfalls von Interesse wäre eine vollständige Prozessliste (ps aux -H > /tmp/ps.out.txt, an Deine Antwort anhängen).

MrIch
18.03.03, 12:02
also bei mir war das Modul mod_gzip an diesem Verhalten schuld!

firefox2k
18.03.03, 12:31
Hallo Jorge!

Vielen Dank für die super detaillierte Antwort, jetzt ist mir einiges klarer!

Zum Kernel:
Linux D113 2.4.9 #1 SMP Thu Mar 21 21:29:30 UTC 2002 i686 unknown

2.4.9. ist er das? (hab ich aus der Info-Datei die ich per php ausgeben kann)

Unter diesem Link gibt es detaillierte Infos:
php-info (http://62.146.91.123/info.php)


Die Popperles ;) :
Wann wird denn ein popper geöffnet? ich habe eigentlich nur 2 user die permanent (also alle 5-10 Minuten) Mails abholen, jeweils von ca. 5 verschiedenen POP3-Postfächern. Könnte das die Zahl erklären?

Welches ist denn der Elternprozess von diesem süßen Zombie bzw. welcher Prozess ist überhaupt der Zombie-Prozess in der Liste?

Zu den Messages:

Ich habe die komplette messages in ein öffentliches Verzeichnis kopiert und abrufbar gemacht:
messages (http://62.146.91.123/messages.txt)
Achtung! sind 3 MB :)
Und ganz ganz viele Out of Memorys :(

Und hier noch die Prozessliste:
alle Prozesse (http://62.146.91.123/ps.out.txt)

Nochmal vielen Dank für die schnelle Reaktion!

*verneig*

Jörg

PigPen|tuX
18.03.03, 13:28
huhu,

was mir am phpinfo auffällt ist, das du ziemlich alte Versionen vom Apache 1.3 und PHP verwendest, aber das nur so nebenbei,

hast du nach außen auch einen Mailserver offen ?

was mich wie jorge stutzig macht sind diese vielen qpopper Einträge im log, viele ip-Adressen sind von T-Online Usern.

hast du die Möglichkeit von deinem Provider mal anderen Speicher einbauen zu lassen
um einen HW-Kreuztest durchzuführen ?

see you
thom

Jorge
18.03.03, 13:34
Original geschrieben von firefox2k

Vielen Dank für die super detaillierte Antwort, jetzt ist mir einiges klarer!

Gern geschehen!


Zum Kernel:
Linux D113 2.4.9 #1 SMP Thu Mar 21 21:29:30 UTC 2002 i686 unknown

2.4.9. ist er das? (hab ich aus der Info-Datei die ich per php ausgeben kann)

IIRC war das der Kernel, welcher diese Probleme mit der in meinem vorherigen Posting beschriebenen Prozess- Speichermanagement hatte. In den nachfolgenden Kerneln (2.4.10, 2.4.11) wurde dermaßen viel an dieser Sache herumgeschraubt, was zur Folge hatte, daß der 2.4.11 kompletter Müll war. Seit Kernel 2.4.12 wurde die Sache stabiler.


Unter diesem Link gibt es detaillierte Infos:
php-info (http://62.146.91.123/info.php)

Mit der php info kann ich nicht allzuviel anfangen. Allerdings habe ich gesehen, daß Du einen relativ alten Apachen installiert hast, aktuell ist 1.3.27 bzw. 2.0.44. Außerdem solltest Du unbedingt Deine zlib auf den Stand 1.1.4 bringen, 1.1.3 hat ein schweres Sicherheitsloch (http://www.cert.org/advisories/CA-2002-07.html). Bei der gelegebnheit auch die Versionen von OpenSSL und OpenSSH überprüfen.
[qoute]
Die Popperles:
Wann wird denn ein popper geöffnet? ich habe eigentlich nur 2 user die permanent (also alle 5-10 Minuten) Mails abholen, jeweils von ca. 5 verschiedenen POP3-Postfächern. Könnte das die Zahl erklären?
[/quote]
Na ja, 18 popper Prozesse erscheinen mir da dann allerdings etwas viel. Ich kenne popper nicht, daher kann ich Dir keinen Tipp geben, wie man das z.B. begrenzen könnte.


Welches ist denn der Elternprozess von diesem süßen Zombie bzw. welcher Prozess ist überhaupt der Zombie-Prozess in der Liste?



root 449 0.0 0.0 1476 296 ? S 2002 10:43 /usr/sbin/cron
root 24857 0.0 0.0 0 0 ? Z 12:44 0:00 [cron <defunct>]
root 24858 0.0 0.0 0 0 ? Z 12:44 0:00 [cron <defunct>]

Die cron Prozesse 24857 24858 sind Zombies (wahrscheinlich, liegt daran, daß wenn cron auf das fertigwerden des Jobs wartet kann es zum selben Zustand kommen). Als Erklärung was ein Zombie ist, hatte ich in meinem vorherigen Posting einen Link gepostet. In der Prozesstabelle erkennst Du Zombies am Status 'Z'. Auszug man ps:


PROCESS STATE CODES
D uninterruptible sleep (usually IO)
R runnable (on run queue)
S sleeping
T traced or stopped
Z a defunct ("zombie") process



Zu den Messages:

Ich habe die komplette messages in ein öffentliches Verzeichnis kopiert und abrufbar gemacht:
messages (http://62.146.91.123/messages.txt)
Achtung! sind 3 MB :)

Kein Problem, 34Mbit/s Standleitung :D

Wie es scheint wird immer nur der httpd gekillt. Mein Rat: Aktuallisiere alles was mit dem Webserver zu tun hat auf eine aktuelle Version (apache, php, mod_gzip, ...). Am besten mal auf dem SuSE FTP SErver nachsehen welche Updates SuSE für 7.3 noch bietet. Und ein Kernelupdate würde ich persönlich auch machen.


Nochmal vielen Dank für die schnelle Reaktion!

*verneig*


Nu übertreib mal nicht, bin kein heiliger :)

Jinto
18.03.03, 15:34
Eigentlich braucht dein Server ein general update. Alle von dir verwendeten Dienste hatten seti Veröffentlichung von SuSE 7.3 mind. 1 Sicherheitsloch (Apache, php, mod_ssl, sendmail, qpopper,mysql)

qpopper wird idR durch den inetd gestartet (bei dem bin ich mir jetzt nicht sicher, ob der auch ein update Kandidat ist). Besser jedoch, du weichst auf den xinetd aus, dort kannst du einige Dinge einstellen (maximal Anzahl gleichzeitiger Zugriffe) AFAIK ist er auch schneller und der Resource-Bedarf ist auch geringer.

Wenn du schon dabei bist, würde mich interessieren, welcher Dienst bei dir auf Port 587 läuft.

firefox2k
18.03.03, 16:57
*zitter*

ui keine Ahnung was auf dem Port läuft ich bin ja eigentlich froh dass der Kasten überhaupt läuft :) Mit den Updates muss ich (momentan) passen, ich bin momentan noch nicht in der Lage so ein System upzudaten da mir noch grundlegendes Wissen über den ganzen Aufbau fehlt.
Ich habe den Rechner auf Mietbasis laufen, das war ein komplettes System eben mit der confixx-Oberfläche damit auch ein Laie wie ich die Sache hinbekommt. Inzwischen versuche ich mir das entsprechende Linux-Wissen anzueignen bin aber sicher noch nicht fähig die notwendigen Schritte auszuführen. Soll heissen: Ich kann nicht "auf Nummer Sicher" gehen und entsprechende Sicherungen ausführen dass wenn die Sache schief geht ich wieder zurück kann :) Ich wollt eh schonmal zumindest den Webalizer updaten aber hab dann doch die Finger weg gelassen, denn das läuft ja alles durch das Confixx und ich habe keine Ahnung wie der reagiert :(
Das Confixx find ich eh ziemlich krampfig und is au schweinsteuer :)
Das einzige was der Server momentan macht ist einen Online-Shop zu befeuern und einen Haufen statische html-Seiten zu speichern, also absolut nix wildes.

"Never change a running system, huh?" :)
Es läuft ja, zwar nicht perfekt aber es läuft. So wie ich das hier aber rausgelesen habe könnt mir jemand der es drauf anlegt da gewaltig ans Bein pinkeln wegen den Sicherheitsbugs, richtig?

Wenn es sich jemand von den anwesenden Profis zutraut das System so weit zu updaten wie es sinnvoll wäre, dann bitte ich um eine kurze Mail an mich mit ungefährer Abschätzung des Arbeits-/Kostenaufwandes, damit ich endlich mal wieder beruhigt schlafen kann :)

Großes merci an alle!