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
Belastung für den Server abschätzen (PHP Projekt)
Re: Belastung für den Server abschätzen (PHP Projekt)
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.
Re: Belastung für den Server abschätzen (PHP Projekt)
@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.
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.
Re: Belastung für den Server abschätzen (PHP Projekt)
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
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
Re: Belastung für den Server abschätzen (PHP Projekt)
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
load average war bei 0.01 und stieg auf 0.04
Dynamisch
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
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
Dynamisch
Code: Select all
Concurrency Level: 10
Time taken for tests: 6.680 seconds
Complete requests: 1000
Failed requests: 0
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
Re: Belastung für den Server abschätzen (PHP Projekt)
Wollte nur zwischenfunken, dass ich httperf benutze ;)