Server hängt sich ständig auf

amaier161

New Member
hallo zusammen,

habe neuerdings ein kleines problem. ich hab von 1und1 nen rootserver mit linux und apache. seit dieser woche habe ich eine werbekampagne am laufen die, erfreulicherweise, die zugriffszahlen deutlich hat ansteigen lassen. nur stürzt nun der server ständig ab und ich muss mehrmals täglich rebooten und apache neu starten. der traffic ist zwar mehr geworden, aber mit knapp 40.000 hits am tag auch nicht gewaltig. woran kann das liegen?

hier mal noch ein paar daten zum server - http://img684.imageshack.us/img684/772/screenel.jpg

dank für die hilfe, alex
 
Ich würde ja jetzt auf die Schnelle Sagen, dass dene Prozessorauslastung schon ziemlich hoch ist. Und 40.000 Hits am Tag ist schon ne ganze Menge. Wenn man davon ausgeht, dass diese nicht gleichmäsig über den Tag verteilt sind, und dass es Spitzenzeiten gibt, ist relativ klar, dass sich der Server immer mal wieder verabschiedet.
Was steht denn in den Betreffenden Logfiles?
 
Also im Logfile des Servers steht nicht wirklich viel drin - siehe Anhang. Obwohl alles was möglich ist Protokolliert wird, steht nichts interessantes drin. Nur das ständige Neustarten des Servers. Das Seltsame ist auch, dass sich die Abstürtze häufen. Teilweise bin ich alle zwei Stunden am Rebooten - das nervt total.

Alex
 

Attachments

Ich glaube, Mordor meinte eher, ob in /var/log/messages zum Zeitpunkt des Absturzes was Interessantes steht oder in den Log-Dateien des Apache.

Allgemein stellt sich die Frage, was genau Du unter "Absturz" verstehst.
 
Ach so :rolleyes: schwer zu sagen, da ich nicht genau weiß wann der Hänger kommt/war. Ich hab mal das File angeschaut, ist mittlerweile knapp 72MB groß, aber so wirklich schlau werd ich da nicht draus. Im Anhang mal die Logs seit 08:00 heute Morgen (seitdem hat er sich mind. zwei mal Aufgehängt).

Also mit Absturzt meine ich, dass ich zwar mit Putty noch aufs Root zugreifen kann, dass wars dann aber auch schon. Ich muss dann immer in meinen 1und1-Account und zunächst den Server neu booten. Dannach kann ich über Plesk oder Putty den Apache neu starten (ist immer down) und dann läufts wieder ein Weilchen.

Danke, Alex
 

Attachments

So in der Form bringt das Logfile garnichts!!! Ich habe da jetzt keine Lust, mich durch 10.000ende von Zeilen Logfile zu quälen. Bitte überprüfe, zu welchem Zeitraum der Server sich aufhängt. Zu diesem Zeitraum brauchen wir dann die Logfiles. Interessant können hier sein: Apache error_log, messages oder syslog und das kernel.log.
 
Sorry, stimmt.

Ich habe den Zeitpunkt mal eingrenzen können: Muss zwischen 14:20 und 14:30 gewesen sein. Ich habe die entsprechenden Einträge rauskopiert - siehe Anhang. Im Apache error_log steht was von 'server reached MaxClients setting'.

Die kernel.log hab ich nicht gefunden. Wo liegt die?

Danke, Alex
 

Attachments

Das einzige was man sehen kann ist, dass dein Apache am Rand seiner Resourcen läuft. Das sollte man auf jeden fall in den Griff bekommen. Ich tippe auch darauf, dass dein Apahe dann den kompletten RAM voll schreibt, und deshalb auf deinem Server nichts mehr geht.

In der messages steht nichts weiter von Wichtigkeit. Zumindest fällt mir da nichts auf, was mit den Abstürzen zu tun hat. Als aller erstes, solltest du mal deinen apache optimieren. Wenn du selbst nicht weißt, woe du ansetzen sollst, kannst du gerne deine Apache-Konfiguration hier posten. Ausserdem wäre interessant, wieviel RAM dein Server hat, und welche Dienste dort laufen.

Beim nächsten Absatz solltest du versuchen, ob du eine Ausgabe des Befehls
Code:
free -m
auf der Konsole bekommst. Dann wüsste man zumindest ziemlich genau, ob es auch noch mit dem RAM zusammen hängt.
 
Hi,

mit 'Apache Configuration' meinst du die httpd.conf? Die hab ich mal angehängt.

RAM hat der Server 1GB. Aktuell sind, laut 'free -m', 587MB in Benutzung. Allerdings läuft er derzeit noch.

Wie kriege ich heraus was alles für Dienste laufen?

Schon mal vielen Dank, Alex
 

Attachments

1und1 Rootserver... kann ich ein Lied von singen. ;)

M.e. billige Hardware mit AMD. Das erste was ich dort tun musste war ACPI komplett abschalten damit das Ding überhaupt mal einen Tag überlebte.
 
Also, die httpd.conf bringt nichts, da das was ich Suche (die Serverkonfiguration) über andere Files includiert wird. Generell braucht man das File, in dem was von MaxServers etc drin steht. Welches das bei deiner Distribution sein sollte, kann ich dir nicht sagen.

1GB Ram bei ca 40.000 Hits, ist ein bischen Arg wenig. Du musst zusehen, dass du deinen Apache Tunest, Mysql Tunest und alles was du wirklich nicht brauchst abschaltest.
 
Ich glaube ich hab die Datei gefunden, nennt sich 'server-tuning.conf' - siehe Anhang. Von 'MaxServers' steht allerdings nix drin!?

Hab jetzt auch nochmals den Traffic genauer angeschaut. Es sind nicht 40.000 sondern im Schnitt nur rund 18.000 PageImpressions pro Tag.

Danke, Alex
 

Attachments

Last edited by a moderator:
Das ist zumindest schon mal ein problem:
Code:
MaxClients         250
Du erlaubst, dass 250 Apacheprozesse gestartet werden können. Wenn man davon ausgeht, dass ein Apacheprozess ca 12-14MB Ram verbraucht, wären dass bei 250 Prozessen weit mehr als deine 1Gb Ram. Das ist wohl mit ein Grund, warum sich der apache aufhängen könnte.

Was steht zum Zeitpukt eines Ausfalls in der error_log des Apaches. Ausserdem, wie schon ganz am anfang gesagt, ist deine CPU gut ausgelastet. Du musst das System umkonfigurieren. In einem meiner letzten Threads hab ich dir das auch schon gesagt. Gib einfach mal in die Forensuche "apachetuning" und "Mysql Tuning" oder "tuning_primare" ein. Da wirst du schon einiges finden. Ausserdem solltest du dir überlegen, ob der Server für deine Anforderungen ausreicht. Mir persönlich scheint es eher so, als wäre er mit seiner Aufgabe überlastet.
 
Also, die httpd.conf bringt nichts, da das was ich Suche (die Serverkonfiguration) über andere Files includiert wird. Generell braucht man das File, in dem was von MaxServers etc drin steht. Welches das bei deiner Distribution sein sollte, kann ich dir nicht sagen.

1GB Ram bei ca 40.000 Hits, ist ein bischen Arg wenig. Du musst zusehen, dass du deinen Apache Tunest, Mysql Tunest und alles was du wirklich nicht brauchst abschaltest.


da verweise ich gerne auf diesen Thread:
 
Vielen Dank. Die Apachekonfiguration hab ich jetzt mal ein bisschen dem 1GB Speicher angepasst. Jetzt ist es zwar ein wenig besser, aber stabil laufen tut das Ding immer noch nicht. An der SQL-Optimierung mit Tuning-Primer versuche ich mich dann als nächstes.

Ich habe mir in der Zwischenzeit auf der Konsole mal mit 'top' die Serverauslastung anzeigen lassen - http://img704.imageshack.us/img704/3626/screenlc.jpg

Was mir da ein bisschen komisch vor kommt ist, dass die ersten vier Apache-Tasks zusammen 76% der CPU beanspruchen :confused: Normal ist das nicht. Oder?

Danke, Alex
 
Das kommt darauf an, wieviel der Prozess zu tun hat, und wie aufwendig das Skript ist, was dahinter steckt. Ausserdem siehst du da ja nur eine Momentaufnahme, denn die Ausgabe von top ist nicht in Realtime. Top refreshed seine Daten in einem gewissen abstand. Wie groß dieser Zeitabstand ist, kann ich nicht genau sagen.
Wenn du dir also länger Top ansiehst, und festellst, dass immer die gleiche Prozess-ID soviel CPU benötigt, dann könnte man davon ausgehen, dass was nicht richtig läuft. Mehr Informationen zu Top gibts entweder unter
Code:
man top
oder hier.

Zu deiner Apacheoptimierung:
Beachte bitte, dass du deinen RAM nicht alleine für den Apache aufteilen darfst. Du hast ja noch mehr Prozesse. Unteranderem brauht auch dein Betriebsystem RAM, der SQL-Server, der Mailserver, und und und. Man muss das richtige Gleichgewicht zwischen den einzelnen Prozessen finden. Ausserdem musst du dir für den Apache mal die Direktive "Timeout" in der apache Konfiguration ansehen. Diese sollte nicht zu hoch sein.
 
Wenn du es dir zutraust, stelle von mod_php auf mod_fcgid um. Anleitungen sollten auch hier im Forum zu finden sein. Prefork mit mod_php ist für Seiten mit starkem Traffic ungeeignet, ganz besonders wenn man nur 1 GB RAM zur Verfügung hat. Ich verstehe echt nicht wieso so viele Server diesen Murks noch als Standardkonfiguration haben.
 
Meine erste Frage wäre, was läuft für ein Script/CMS auf dem Server? Ist es Marke Eigenbau wäre optimieren angesagt bzw. evtl. Fehlersuche z.B. ob die Scripte sich unter allen Bedingungen ordnungsgemäß beenden oder ob Du überlange / zu komplizierte / zu viele mySQL-Queries hast, weshalb die PHP-Scripte evtl. zu lange auf Antwort warten müssen.

Bei fertigen CMS können evtl. zusätzlich installierte Addons derartige Probleme verursachen, wenn sie nicht sauber programmiert sind oder Inkompatibilitäten auftreten. Einige CMS sind dafür bekannt, dass sie relativ viel Speicher benötigen.

Ebenfalls wäre zu untersuchen, ob wieviele User Du gleichzeitig auf Deiner Webseite/Server hast (in Spitzenzeiten). Solltest Du tatsächlich mehr als 250 gleichzeitig in der Spitze haben, könnte der Server tatsächlich unterdimensioniert sein - dann lassen sich signifikante Performancegewinne IMHO in den meisten Fällen wirklich nur mit einer Optimierung des Scriptes erreichen (Fehlerfreiheit vorausgesetzt). Weil, wieviel User/Hits Dein Server gleichzeitig verträgt, ist sehr vom Script/Content abhängig.

Zur reinen Performancesteigerung könnte ein PHP-BEschleuniger für z.B. APC hilfreich sein. Zur wirtschaftlicheren RAM-Auslastung könnte es sicherlich sinnvoll sein, Apache im mpm-worker-Modus zu betreiben statt prefork. Dafür musst Du dann allerdings PHP mit FastCGI betreiben (bei dieser Methode kann man auch einen PHP-Beschleuniger wie APC einsetzen). Die Konfiguration ist allerdings nicht ganz trivial. Last but not least tendiert fastCGI-PHP dazu, dass der Server im Grenzbereich instabiler wird.

Du könntest weiterhin Apache und PHP von Hand kompilieren, um die Binaries auf Deine Bedürfnisse und CPU hin zu optimieren, was in der Summe dann auch einiges an Speicher sparen sowie ein paar Prozentpunkte mehr Leistung bringen kann.

Vorausgesetzt, Dein Server steht tatsächlich unter Volllast, wäre zu überlegenm ob Du den Mailserver-Betrieb nicht z.B. auf einen Freeservice wie Google-Apps auslagerst, denn Mailserver verbrauchen u.U. durch Virenscannung und Spamerkennung ebenfalls erheblich Ressourcen, was nicht zu unterschätzen ist.
 
Last edited by a moderator:
Last but not least tendiert fastCGI-PHP dazu, dass der Server im Grenzbereich instabiler wird.

Begründung? Das ergibt keinen Sinn. Eine konstante Anzahl von PHP-Prozessen und damit ein konstanter RAM-Bedarf ist das beste was man aus Stabilitätssicht haben kann.
 
Hallo auch,

lange Rede kurzer Sinn: Habe genau das gleich Problem. Mein Server muss ca. alle 30 Minuten neu gebootet werden.

Wäre jemand bereit, sich den Server mal über ssh anzusehen, gegen eine angemessene Vergütung natürlich? Ich denke, das wäre die schnellste Lösung, da nicht x Logfiles hin und her geschaufelt werden müssten. Ich wäre wirklich verlegen drum.

Vielen Dank im voraus.

Gruß
Chris
 
Last edited by a moderator:
Back
Top