WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Linux, UNIX, Open Source (http://www.wcm.at/forum/forumdisplay.php?f=13)
-   -   Performance checken (http://www.wcm.at/forum/showthread.php?t=146035)

paux 28.09.2004 18:04

Performance checken
 
Hi!

Wie kann ich einen Webserver überprüfen, warum er zu Spitzenzeiten so langsam ist? Nun, RAM und CPU kann ich mit free & top nachschauen, aber wie sieht's aus mit:

- Harddisk (Zu langsam? Datenbus überfordert?) - Wie kann ich das nachprüfen?

- Netzanbindung? Wie kann ich die gerade in Anspruch genommene Auslastung nachsehen? (ohne X!)

Gibts vielleicht schon eine Test-Suite für sowas?

lg paux

frazzz 28.09.2004 18:16

http://www.cps.msu.edu/~enbody/perfmon/

maybe es gibt den auch für linux?


http://www.hpl.hp.com/research/linux/perfmon/



:D

spunz 28.09.2004 18:36

cacti => aufzeichnen

vmstat => kannst du auch per script in cacti einbinden.

apachetop

paux 28.09.2004 19:42

Zitat:

Original geschrieben von spunz
1) cacti => aufzeichnen

2) vmstat => kannst du auch per script in cacti einbinden.

3) apachetop

ad 1) Muss da nicht ein SNMP Dämon laufen? Oder woher kommen die Zahlen? MaW: Muss ich root sein um das zu installieren?

ad 2) Meinst du vnstat? vmstat kenn ich (noch) nicht. Wenn doch vnstat, seh ich da nicht nur die Tagessumme in MB? Wie kann ich da auf ausreichende Bandbreite schließen?

ad 3) Danke, mal schaun was das kann.

lg paux

spunz 28.09.2004 19:53

1. nö, geht auch per iptables

2. vmstat http://www.uwsg.iu.edu/usail/man/linux/vmstat.8.html

Philipp 29.09.2004 21:30

Re: Performance checken
 
Zitat:

Original geschrieben von paux
Wie kann ich einen Webserver überprüfen, warum er zu Spitzenzeiten so langsam ist?
Mehr Details wie Hardwarekonfiguration wären nicht schlecht.

Wie viele Apache Prozesse laufen zu Spitzenzeiten? Auf was ist MaxClients in der httpd.conf eingestellt?

Sloter 29.09.2004 21:59

Eigentlich sollte die Ausgabe von top reichen.
Prozessorauslastung?
Ram? sind zu 99,9% zu wenig, wenn du einen modernen Prozessor verwendest.
Sind beide nicht ausgelastet, ist es die Platte. Die wird aber selten wirklich belastet bei einem reinen Webserver.

Sloter

btw: Bandbreite = mrtg
Prozesse, Ram = Nagios

paux 29.09.2004 23:25

ok, die strategie wäre also: wenn cpu und ram noch spielraum haben und auch eine erhöhung der anzahl von serverprozessen nix bringt, dann sollte eher die bandbreite erhöht werden, bevor neue platten angeschafft werden.

oder? :)

lg paux

Philipp 29.09.2004 23:52

Es kommt auch darauf an was für Webanwendungen am Server laufen. Eine PHP/MySQL basierende Website kann z.B. auch durch einen schlecht konfigurierten Datenbankserver ausgebremst werden usw.

Sloter 30.09.2004 09:42

Zitat:

Original geschrieben von paux
ok, die strategie wäre also: wenn cpu und ram noch spielraum haben und auch eine erhöhung der anzahl von serverprozessen nix bringt, dann sollte eher die bandbreite erhöht werden, bevor neue platten angeschafft werden.

oder? :)

lg paux

:ja:

Die Anzahl der Prozesse brauchst du nicht erhöhen, oder kommt eine Fehlermeldung?

Sloter

paux 30.09.2004 11:36

Vorweg: Meine Fragen waren eher prinzipieller Natur.
OK, allfällige Backends wie DB oder Appserver sind natürlich ebenfalls ins Auge zu fassen.
Nur Platten und Bandbreite hätte ich nicht gewußt ab wann die schuld sein könnten oder wie sie (unter Linux) zu überprüfen wären.

@Sloter: Wie sollte denn die Fehlermeldung lauten? Ruft Apache von selbst nach mehr children wenn die Maximalzahl nicht ausreicht?

lg paux

_m3 30.09.2004 11:52

Zitat:

Original geschrieben von paux
@Sloter: Wie sollte denn die Fehlermeldung lauten? Ruft Apache von selbst nach mehr children wenn die Maximalzahl nicht ausreicht?
Zitat:

Die Direktive MaxClients setzt die Grenze für die Anzahl gleichzeitig bedienter Anfragen. Jeder Verbindungsversuch oberhalb der MaxClients-Begrenzung wird üblicherweise in eine Warteschlange gestellt, bis zu einer Anzahl basierend auf der ListenBacklog-Anweisung. Sobald ein Kindprozess am Ende einer anderen Anfrage freigegeben wird, wird die Verbindung bedient.

Für Server ohne Thread-Unterstützung (z.B. prefork) wird MaxClients als maximale Anzahl der Kindprozesse verstanden, die zur Bedienung von Anfragen gestartet werden. Die Voreinstellung ist 256. Um diesen Wert zu erhöhen, muss auch ServerLimit angehoben werden.

Bei Servern mit Thread-Unterstützung und bei Hybrid-Servern (z.B. beos oder worker) begrenzt MaxClients die Gesamtzahl der Threads, die für die Bedienung von Anfragen verfügbar sind. Die Voreinstellung für beos ist 50. Bei Hybrid-MPMs ist die Voreinstellung 16 (ServerLimit) multipliziert mit dem Wert 25 (ThreadsPerChild). Um MaxClients auf einen Wert zu erhöhen, der mehr als 16 Prozesse erfordert, müssen Sie daher auch ServerLimit anheben.
http://httpd.apache.org/docs-2.0/mod/mpm_common.html

Sloter 30.09.2004 12:38

Zitat:

Original geschrieben von paux

@Sloter: Wie sollte denn die Fehlermeldung lauten? Ruft Apache von selbst nach mehr children wenn die Maximalzahl nicht ausreicht?

lg paux

Ja, es kommt eine Meldung das er ausgelastet ist, ausserdem steigt der Load unheimlich an.

Ram, Ram und nocheinmal mehr Ram :D

Sloter

Philipp 30.09.2004 14:20

Zitat:

Original geschrieben von paux
Wie sollte denn die Fehlermeldung lauten?
majorgeeks01:~# cd /var/log/apache
majorgeeks01:/var/log/apache# cat error.log | grep MaxClients
[Wed Sep 29 09:29:41 2004] [error] server reached MaxClients setting, consider raising the MaxClients setting
[Wed Sep 29 10:55:19 2004] [error] server reached MaxClients setting, consider raising the MaxClients setting

majorgeeks01:/var/log/apache#

Auffällig ist in einer solchen Situation auch, das die Prozesse bei top auf einen gewissen Wert bleiben, so z.b. bei MaxClients 256 im 2XX Bereich. Im Attachmant ein Screenshot einer solchen Situation bei MaxClients 2048. Um solche Werte zu erreichen (2048) muss man aber schon 3DMark05 hosten ;)

Apache selber hat normalerweise ein Hard Limit von 256 (512 bei Debian) MaxClients hat. Um das zu ändern muss Apache neu kompiliert werden. Einige Hostingsoftware wie cPanel erhöhen die MaxClients aber auch selbstständig je nach Serverauslastung.

paux 07.10.2004 12:00

Hallo,
ich nerv mal wieder ein bißchen :)

Inwiefern lassen sich Hochrechnungen anstellen bzw. Voraussagen machen der Art "Mit dieser Hardwareausstattung wird Apache etwa X Req./s mit Y kb/s abarbeiten können"? Natürlich wird's gegen Ende der Fahnenstange (RAM) nichtlinear, sprich ein bißchen mehr Verkehr bringt das System noch weit mehr ins Schwitzen. Aber kann man z.B. sagen, was weiß ich, "Derzeit ist unser System zu 1/3 ausgelastet, also vertragen wir noch 3x so viel Traffic"?

Konkret will ich einfach wissen, wie weit unser 3.2GHz P4 mit 1GB RAM gehen kann, sofern wir dem Apache natürlich jeden Freiraum bzgl. Konfig geben (Patchen ausgeschlossen), bzw. *wie* gut sich eine Verdopplung des RAM auswirken würde.

lg paux

Philipp 07.10.2004 15:03

Zitat:

Konkret will ich einfach wissen, wie weit unser 3.2GHz P4 mit 1GB RAM gehen kann, sofern wir dem Apache natürlich jeden Freiraum bzgl. Konfig geben (Patchen ausgeschlossen), bzw. *wie* gut sich eine Verdopplung des RAM auswirken würde.
Das kommt sehr auf die verwendete Software (z.B. PHP Scripte) und den Anwendungsbereich an.

Sloter 07.10.2004 15:09

Wie Phlipp schon schrieb, kommt es sehr auf die Anwendungen an, die daruf laufen.

Imho, gute Mischung von PHP (MySql Abfragen) und HTML sollte er 50 GB - 80 GB locker schaffen.

Sloter

paux 07.10.2004 15:33

Zitat:

Original geschrieben von Sloter
Wie Phlipp schon schrieb, kommt es sehr auf die Anwendungen an, die daruf laufen.
OK, sagen wir "Gute Mischung" := alles was nicht allzu "specialiced" ist. :rolleyes:
Zitat:


Imho, gute Mischung von PHP (MySql Abfragen) und HTML sollte er 50 GB - 80 GB locker schaffen.

Im Monat oder in der Woche? Oder am Tag?? ;) Sorry, aber mir fehlt wirklich die Vorstellung davon "was so alles geht".
Über Req./s kann man wahrscheinlich nix mehr sagen, oder?

lg paux

Philipp 07.10.2004 16:09

Im nehme an im Monat ;)

Mit durchschnittlichen PHP Scripten wären ungefähr 200000 - 300000 Seitenaufrufe/Tag theoretisch möglich. Ich würde je nach verwendeten Script eventuell auch noch Truck MMCache installieren.

Wirklich kritisch wird es eigentlich erst ab 1000000 Seitenaufrufe/Tag.

Sloter 07.10.2004 19:19

Zitat:

Original geschrieben von paux
OK, sagen wir "Gute Mischung" := alles was nicht allzu "specialiced" ist. :rolleyes:

Im Monat oder in der Woche? Oder am Tag?? ;) Sorry, aber mir fehlt wirklich die Vorstellung davon "was so alles geht".
Über Req./s kann man wahrscheinlich nix mehr sagen, oder?

lg paux

1, es kommt schon sehr viel auf die Qualität der Scripten an.
Eine Abfrage z.B über 5 Tabellen mit einigen tausenden Datensätze kostet unnötig Zeit.

2, Im Monat wie Phlipp schon schrieb.
Es wird nicht nach durchschnittlicher Übertragungsgeschwindigkeit gewertet, sondern nach Peaks (Spitzen).
Wenn ich deine Rechnung hernehme, genügt eine 1 MBit/sec Leitung und ich kann ungefähr 320 GB Traffic im Monat machen.
Diese Rechnung ist leider nicht ganz richtig.
In der Nacht oder am Vormittag wird der/die Server/Leitung überhaupt nicht ausgelastet sein.
Wichtig sind die Peaks und die muß die Leitung und der Server aushalten.
Freitag Abend oder wenn es regnet/schneit kommen die Peaks :-)
Hängt aber auch wieder stark von der Zielgruppe ab.

Sloter


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag