Belastung für den Server abschätzen (PHP Projekt)

Bash, Shell, PHP, Python, Perl, CGI
phisch
Userprojekt
Userprojekt
Posts: 41
Joined: 2002-06-07 17:45
Location: Flagstaff

Belastung für den Server abschätzen (PHP Projekt)

Post by phisch »

Hi How,

meinen Frage hat jetzt zwar leider wenig mit den rootServern zu tun, aber ich hoffe, ich kann trotzdem hier mal fragen... :-)

Ein Projekt, das ich derzeit betreue, wird nun gänzlich umgebaut und mit viel Dynamik versehen. Realisiert wird das ganze dann mit PHP und MySQL.

Da die Designer schon fleißig am rumwurschteln sind, würde mich mal interessieren, wie ich jetzt schonmal grob abschätzen kann, wieviel Last das Projekt auf dem Server erzeugen wird.

Ich habe die Statistik der letzten 2 Jahre (derzeit ist das Projekt nur so halbdynamisch) und die aktuelle Serverlast (derzeit 1% in der Primetime). Außerdem habe ich einen Testserver (bewusst "nur" ein P1 90Mhz) eingerichtet, damit ich sehen kann, wie es wird, wenn die Resourcen nicht mehr aussreichen.

Meine Vorgehensweise wäre jetzt, wenn die Snowboarder - ah Designer - die ersten Templates liefern, mal die ersten phpSeite zu erstellen, die DB mit viel Nonsenes füllen und dann von mehreren lokalen (und starken) Rechnern mit ApacheBench den kleinen Server benchmarken und so richtig Last erzeugen....

Langer Rede kurzer Sinn: Was haltet Ihr von dieser Vorgehensweise bzw wie schätzt Ihr ab, wie sich ein Projekt dann real verhält?

Vielen Dank schonmal


Grüße

phisch
oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: Belastung für den Server abschätzen (PHP Projekt)

Post by oxygen »

Also ich denke nicht, dass ein P1 90 der richtige Testrechner ist. Man kann schlecht abschätzen wie es dann z.B. auf einem Dual P3 läuft. Du solltest als Testumgebung schon so etwa die spätere Hard- und Software benutzen.
flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: Belastung für den Server abschätzen (PHP Projekt)

Post by flo »

@oxygen: jein ...

Für die Ermittlung des Speicherverbrauchs eines Tasks bei Last reicht es auf jeden Fall, aber ein PI/90 ist definitiv nicht für repräsentative Messungen geeignet, wenn es um den eher subjektiven Faktor "Geschwindigkeit" geht.

Ein Produktionssystem läuft mit 80-150 Apachen gleichzeitig und kann dadurch gemäß einer "Mischkalkulation" einige Anfragen gleichzeitig beantworten. Nur fängt dann das Dilemma schon an - läuft PHP als CGI, ist die Datenbank lokal, über TCP oder socket usw. LAMP ist nicht gleich LAMP. Du solltest für einen wirklich objektiven Test auch das Setup Deines Hosters nachvollziehen. In der Standardkonfig stößt Du z.B. relativ schnell an Speichergrenzen bei PHP, wenn die Seite umfangreich wird. Oder die maximale Execution Time reicht nicht.

Dazu kommt noch, daß nur die Daten(bank)optimierung bei großen Projekten nochmal 50% bringen kann. D.h. Indexe anlegen, Queries überarbeiten usw.

Grüße,

flo.
arty
Userprojekt
Userprojekt
Posts: 729
Joined: 2002-06-12 10:11

Re: Belastung für den Server abschätzen (PHP Projekt)

Post by arty »

Hi,

wenn sich die Inhalte nicht oft ändern, ist es nicht nötig, ständig die Inhalte aus der Datenbank zu ziehen. Besser wäre es, wenn man die Inhalte aus der DB in statische Seiten schreiben lässt, das vermindert die Last enorm. Wenn Ã?nderungen vorgenommen werden, muss die Seite natürlich wieder neue generiert werden.

Erfordert zu Beginn zwar mehr Planungs- und Programmierarbeit, aber entlastet den Server enorm.

bye
arty
phisch
Userprojekt
Userprojekt
Posts: 41
Joined: 2002-06-07 17:45
Location: Flagstaff

Re: Belastung für den Server abschätzen (PHP Projekt)

Post by phisch »

Hi,

danke für die Antworten. Der Testserver ist vom Softwareaufbau her identisch mit dem späteren Produktivsystem. Mir ist klar, dass ich wohl nicht einfach mit Faktor X hochrechnen kann, wie es sich später auf dem Server verwält, aber irgendwo wollte ich halt mal anfangen...

DasProduktivsyem gibt es ja schon und wenn ich von meinem rootie aus Benchmarke, dann dürfe die Verbindung ja nicht zum Flashenhals werden. Jetzt habe ich mal folgenden Test gemacht:

Eine PHP Seite mit DB Inhalt und 2 Includes (Header und Footer) und einmal die selbe Seite als reinen HTML Text (beide Seiten sind identisch): Ergebnis:

Statisch

Code: Select all

Concurrency Level:      10
Time taken for tests:   6.110 seconds
Complete requests:      1000
Failed requests:        0
load average war bei 0.01 und stieg auf 0.04

Dynamisch

Code: Select all

Concurrency Level:      10
Time taken for tests:   6.680 seconds
Complete requests:      1000
Failed requests:        0
load average war bei 0.01 und stieg auf 0.16

OK, wie interpretiere ich das nun? Da die Zeiten für die 1000 Anfragen ja nicht weit auseinander liegen, würde ich mal sagen, ist die Differenz die Zeit, die für die Verbindung zur DB draufgeht. Kann man das so pauschal sagen?

Und die höhere Last ist ebenfalls die DB. Kann ich jetzt so Pi mal Daumen sagen, dass das System (unter der Anahme es gäbe nur diese eine PHP Seite) so bis zu 50 gleichzeitige Requests verarbeiten kann?

Danke

phisch
floschi
Userprojekt
Userprojekt
Posts: 3247
Joined: 2002-07-18 08:13
Location: München

Re: Belastung für den Server abschätzen (PHP Projekt)

Post by floschi »

Wollte nur zwischenfunken, dass ich httperf benutze ;)