Server ausgelastet oder nicht?

labu

New Member
Hallo zusammen,

seit 4 Monaten habe ich einen Server mit diesen Spezifikationen laut cat /proc/cpuinfo:

processor : 1
vendor_id : GenuineIntel
cpu family : 15
model : 6
model name : Intel(R) Pentium(R) D CPU 3.40GHz
stepping : 5
cpu MHz : 3400.000
cache size : 2048 KB

----

Ich habe täglich ca. 15000 Besucher und eigentlich ständig ca. 100 online. Mein Frontend ist php und im Hintergrund deine SQL 4.1 Datenbank. Ich habe sehr sehr viele SQL Zugriffe. Ich würde jetzt meinen Server im Seitenaufbau nicht als langsam bezeichnen allerdings sind die load average Werter meistens über 1. Also im Moment:

load average: 1.84, 1.02, 1.98

Wenn ich das alles richtig verstanden habe, bedeutet das, das mein einzelner Prozessor etwas überlastet ist? Nun, ich hätte gerne mal gewusst, was ich tun kann. Das mir einfach mal jemand sagt, dass der server stabil ist oder ich dringed aufrüsten müsste oder so, denn ich hab im Moment einfach nicht den Überlick ob der Server an seine Grenzen stößt und täglich kurz vorm kollaps steht oder alles bestens ist. Wenn Ihr mir sagt was für infos Ihr braucht werde ich diese umgehend hier online stellen. Für einen Support oder eine kurze einführung per skype würde ich natürlich auch bezahlen. ich hab vnc am laufen, also könnte man mir alles mal erklären...aber erstmal hier im forum! Danke!

top - 09:38:55 up 9 days, 15:09, 1 user, load average: 0.67, 0.71, 0.72
Tasks: 138 total, 2 running, 136 sleeping, 0 stopped, 0 zombie
Cpu(s): 25.2% us, 3.0% sy, 0.0% ni, 71.1% id, 0.0% wa, 0.0% hi, 0.7% si
Mem: 1012604k total, 818000k used, 194604k free, 73092k buffers
Swap: 530136k total, 0k used, 530136k free, 337908k cached
 
In dem Linux Magazin 08/07 wurde das Thema aufgegriffen. Die Länge der Run Queue, was im Prinzip der Load Average Wert ist, hat nicht unbedingt einen negativen Effekt auf das Antwortverhalten des Servers.

Sollte dem so sein, könnte man das anhand der Logdateien vom Apache herausfinden. 1.86 heißt lediglich, dass hier ein paar Anfragen in einer Warteschlange sind. Die Frage ist, befinden sie sich solange in der Wartschlange, dass der Anwender das Gefühl hat, der Webserver sei zu langsam?

Grüße
Sinepp
 
maßgebend sind die gleichzeitigen Verbindungen zum Server. bei 1 GB RAM schafft Apache ~ 50 Verbindungen (httpd2 Prozesse).

Optimiere die httpd.conf und die my.cnf
Code:
KeeAliveTimeout 2
z.b. wenn dann der load runter geht brauchst du eigentlich nicht viel weiter optimieren. query_cache sollte in der my.cnf auf jeden Fall aktiviert sein!

Apache + mySQL optimieren
 
Last edited by a moderator:
Hallo noto,

meine keepalive (httpd) sieht so aus:

KeepAliveTimeout 15

meine cache (my.conf) so:

set-variable = query_cache_size=80M

also ich muss dann nur die keepalivetimeout auf 2 setzen?

wie weiss ich, dass das auch wirklich notwendig ist? hab halt nur sorge, weil das projekt ziemlich groß ist und ich mir keine ausfälle erlauben kann. Danke!
 
Hallo!
wie weiss ich, dass das auch wirklich notwendig ist? hab halt nur sorge, weil das projekt ziemlich groß ist und ich mir keine ausfälle erlauben kann. Danke!
An Veränderungen der Serverauslastung (postiv wie negativ). Den für dein Projekt optimalen Wert bekommst du wohl nur durch Messen, Steuern, Regeln heraus.

mfG
Thorsten
 
ok, danke!

eine frage hab ich noch:

wenn ich top ausführe sehe ich ja auch in der liste den %mem wert. Bei sql steigt dieser innerhalb von 3 Tagen von 1% bis auf 4,7% und weiter steigend.

was bedeutet das? sollte ich mir hier sorgen machen und öfter mal einen restart durchführen oder einfach abwarten?!

danke
 
SQL speichert Sachen im Ram. Das ist auch gewollt so, weil sie dadurch sehr viel schneller verfügbar sind als von der HDD. Ob die genutzte RAM-Größe jetzt deinen Apache zu negativ beeinflusst kann ich dir nicht sagen. Wahrscheinlich ist das nur durch Testen herrauszufinden. Wenn du die vielen Plugins des Apache nicht brauchst wäre es vielleicht sinnvoll zu überlegen, ob du auf Lighthttpd umsteigen willst. Dieser schluckt weniger RAM hat aber t.w.(gar keine?) keine Pendants zu Apachemods. Da du aber anscheinend doch noch recht zufrieden mit der Geschwindigkeit bist, würde ich mich an deiner Stelle lokal oder so mal in den Lighthttpd einarbeiten und dann mal testen.
MfG
Chaos
 
Datenbanken werden mit der Zeit größer und der RAM Verbrauch nimmt zu. MySQL nimmt sich immer mehr RAM.

Mit den Variables läßt sich der RAM Verbrauch limitieren.

1 . sollte man Apache optimal konfigurieren
2. sollte man die MySQL Variablen dem RAM entsprechend konfigurieren

kleine sort- u. read_buffers reichen meist aus. Lieber die thread_cache und table_cache erhöhen.

Was soll man noch groß sagen? Wir haben Anleitungen dafür, wenn die keiner liest kann ich auch nix dafür.
 
Und vielleicht noch eine Idee von mir: Die Datenbank sollte nach Möglichkeit ins RAM passen. Ein Anstieg auf 4.7% und weiter steigend ist nur dann ein Problem, wenn Du bei 99.9% RAM Auslastung overall bist.

Never touch a running system. Wenn das System performant läuft, musst Du nichts ändern. Geht Dir der RAM aus, dann schon. Zeigt der Apache lange prozesszeiten für die Abarbeitung von Requests, dann auch (stell Dir eine beliebig lange Liste vor).

Und eine kleine Weisheit: Der Mangel an RAM|CPU-Kraft|HDDSpeicher behebt man in der Regel mit mehr RAM|CPU-Kraft|HDDSpeicher. Das soll jetzt nicht heißen, dass man ein System nicht noch optimieren kann. Aber wenn die Maßnahmen nur kosmetisch sind, solltest Du irgendwann auch über eine Erweiterung des Systems nachdenken. Denn das kann günstiger sein, als mit vier Stunden Zeitaufwand zwei Megabyte RAM frei zu machen.

Grüße
Sinepp
 
Back
Top