Das Original hat insgesamt ein paar tausend Script-Zeilen der Nachbau nun runde 62 Zeilen um alles abzudecken.
Im Original werden einzelne Mysql - Abfragen vorgenommen innerhalb von komplexen Schleifen verarbeitet und innerhalb dieser Schleifen werden weitere Mysql -Abfragen als Sql generiert, ausgeführt und weiter verarbeitet.
Das Alternativsystem jedoch arbeitet mit einer einzigen Mysql Abfrage.
Die Ausgabe ist derart kompatibel das die der CMS beigelegten Menüs mit Ausnahme des Variablennamens index (ist nun index_) kompatibel sind - können also locker verwendet werden.
Was aber bringt das denn unterm Strich.
Bei einzelnen Seitenaufrufen ist das Alternativsystem 2 bis 5 so schnell.
Was aber interessiert ist der Lastbetrieb und da bemühen wir mal wieder unser Benchmarktest mittels Siege mit verschiedenen Lasten.
Die Lastzeit ist 1 Minute. Die eingestellte Usern bomardieren das System pausenlos mit Anfragen.
Entscheidend ist die Anzahl der erfolgreichen Transactions wie auch die durchschnittliche Response Time und vor allem die Anzahl der Transactions pro Sekunde.
Testserver ist der Entwicklungsrechner - System und PHP auf einer SD Platte, 32 GB sehr schneller Rechner.
Und nun zu den Ergebnissen unter Last - cmsms ist der Betrieb mit meinem Plugin cmsmsorg ist das Original.
Hier nun mal mit 100 Usern:
siege -b -c100 --time=1M http://localhost/cmsms/
** SIEGE 3.0.1
** Preparing 100 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 7078 hits
Availability: 100.00 %
Elapsed time: 59.38 secs
Data transferred: 122.80 MB
Response time: 0.83 secs
Transaction rate: 119.20 trans/sec
Throughput: 2.07 MB/sec
Concurrency: 99.09
Successful transactions: 7078
Failed transactions: 0
Longest transaction: 1.59
Shortest transaction: 0.09
root@jan:~/www# siege -b -c100 --time=1M http://localhost/cmsmsorg/
** SIEGE 3.0.1
** Preparing 100 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 5159 hits
Availability: 100.00 %
Elapsed time: 59.17 secs
Data transferred: 71.96 MB
Response time: 1.13 secs
Transaction rate: 87.19 trans/sec
Throughput: 1.22 MB/sec
Concurrency: 98.92
Successful transactions: 5159
Failed transactions: 0
Longest transaction: 2.77
Shortest transaction: 0.16
Klar erkennbar Fastmenu ist um 72% schneller, schafft dementsprechend mehr Transactions und liegt bei Response Time sehr gut im Rennen.
Und nun 200 User:
siege -b -c200 --time=1M http://localhost/cmsms/
** SIEGE 3.0.1
** Preparing 200 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 7060 hits
Availability: 100.00 %
Elapsed time: 59.71 secs
Data transferred: 122.49 MB
Response time: 1.66 secs
Transaction rate: 118.24 trans/sec
Throughput: 2.05 MB/sec
Concurrency: 196.62
Successful transactions: 7060
Failed transactions: 0
Longest transaction: 2.62
Shortest transaction: 0.60
siege -b -c200 --time=1M http://localhost/cmsmsorg/
** SIEGE 3.0.1
** Preparing 200 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 5177 hits
Availability: 100.00 %
Elapsed time: 59.77 secs
Data transferred: 72.22 MB
Response time: 2.27 secs
Transaction rate: 86.62 trans/sec
Throughput: 1.21 MB/sec
Concurrency: 196.25
Successful transactions: 5177
Failed transactions: 0
Longest transaction: 10.59
Shortest transaction: 0.14
Auch hier ist Fastmenu im Schnitt um rund 27% schneller - das original zeigt bereits Ausfälle siehe longest Transaction - solange werden echte Besucher selten warten.
Und nun 300 User - das ist der Grenzbereich für den Server selbst - der ist nicht für derart viele Besucher konfiguriert (da Entwicklungsrechner).
siege -b -c300 --time=1M http://localhost/cmsms/
** SIEGE 3.0.1
** Preparing 300 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 6866 hits
Availability: 100.00 %
Elapsed time: 59.89 secs
Data transferred: 119.12 MB
Response time: 2.53 secs
Transaction rate: 114.64 trans/sec
Throughput: 1.99 MB/sec
Concurrency: 290.20
Successful transactions: 6866
Failed transactions: 0
Longest transaction: 17.51
Shortest transaction: 0.50
oot@jan:~/www/cmsmsorg# siege -b -c300 --time=1M http://localhost/cmsmsorg/
** SIEGE 3.0.1
** Preparing 300 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 4997 hits
Availability: 100.00 %
Elapsed time: 59.62 secs
Data transferred: 69.71 MB
Response time: 3.46 secs
Transaction rate: 83.81 trans/sec
Throughput: 1.17 MB/sec
Concurrency: 289.82
Successful transactions: 4997
Failed transactions: 0
Longest transaction: 34.50
Shortest transaction: 0.87
Deutlich erkennbar die Begrenzung der Transactions die trotz mehr Besucher nicht mehr werden sondern weniger.
Praktisch ist da nun das Ende der Fahnenstange erreicht - das ganze CMS-System ist nicht für eine solche Besucherzahl ausgelegt. Andere schaffen da noch locker bis zum 10 fachen.
Nun noch ein Wort zu den Leistungswerten - die sind alle lokal ermittelt.
Das Original erreicht bei einer 100 MBit Anbindung im Netz selbst bei 100 Usern selten mehr als 15 Transactions / Sekunde , die Mehrzahl der getesteten liegen bei unter 5 bei 100 Usern im Benchmark.
Hier nun mal ein paar Live Test's mit nur 5 Usern und Original - CMSMS um die betreffenden Server nicht zu sehr zu bombardieren:
siege -b -c5 --time=1M http://www.cmsmadesimple.de/
** SIEGE 3.0.1
** Preparing 5 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 588 hits
Availability: 100.00 %
Elapsed time: 59.62 secs
Data transferred: 49.98 MB
Response time: 0.50 secs
Transaction rate: 9.86 trans/sec
Throughput: 0.84 MB/sec
Concurrency: 4.97
Successful transactions: 588
Failed transactions: 0
Longest transaction: 2.51
Shortest transaction: 0.33
siege -b -c5 --time=1M http://www.cmsmadesimple.org/
** SIEGE 3.0.1
** Preparing 5 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 357 hits
Availability: 100.00 %
Elapsed time: 59.58 secs
Data transferred: 19.58 MB
Response time: 0.83 secs
Transaction rate: 5.99 trans/sec
Throughput: 0.33 MB/sec
Concurrency: 4.96
Successful transactions: 357
Failed transactions: 0
Longest transaction: 3.58
Shortest transaction: 0.61
siege -b -c5 --time=1M http://www.hzp-usedom.de/
** SIEGE 3.0.1
** Preparing 5 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 86 hits
Availability: 100.00 %
Elapsed time: 59.20 secs
Data transferred: 3.56 MB
Response time: 3.26 secs
Transaction rate: 1.45 trans/sec
Throughput: 0.06 MB/sec
Concurrency: 4.73
Successful transactions: 86
Failed transactions: 0
Longest transaction: 4.96
Shortest transaction: 1.84
siege -b -c5 --time=1M http://www.gaspardcoaching.de/
** SIEGE 3.0.1
** Preparing 5 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 681 hits
Availability: 100.00 %
Elapsed time: 59.35 secs
Data transferred: 5.40 MB
Response time: 0.43 secs
Transaction rate: 11.47 trans/sec
Throughput: 0.09 MB/sec
Concurrency: 4.99
Successful transactions: 681
Failed transactions: 0
Longest transaction: 1.50
Shortest transaction: 0.26
Zum Vergleich der lokale Test mit 5 Usern:
siege -b -c5 --time=1M http://localhost/cmsms/
** SIEGE 3.0.1
** Preparing 5 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 7546 hits
Availability: 100.00 %
Elapsed time: 59.04 secs
Data transferred: 130.92 MB
Response time: 0.04 secs
Transaction rate: 127.81 trans/sec
Throughput: 2.22 MB/sec
Concurrency: 4.99
Successful transactions: 7546
Failed transactions: 0
Longest transaction: 0.09
Shortest transaction: 0.02
siege -b -c5 --time=1M http://localhost/cmsmsorg/
** SIEGE 3.0.1
** Preparing 5 concurrent users for battle.
The server is now under siege...
Lifting the server siege.. done.
Transactions: 5586 hits
Availability: 100.00 %
Elapsed time: 59.60 secs
Data transferred: 77.92 MB
Response time: 0.05 secs
Transaction rate: 93.72 trans/sec
Throughput: 1.31 MB/sec
Concurrency: 4.99
Successful transactions: 5586
Failed transactions: 0
Longest transaction: 0.11
Shortest transaction: 0.03
Anwender von Fastmenu haben mir berichtet das ihre Transactionrate dramatisch in die Höhe geschnellt ist. Der beste gemeldete Wert lag live bei 45 Transactions/Sekunde.
Also die Auswirkungen einer derartigen Optimierung können dramatisch sein.
Klar ist das bei mickrigen Transaktionswerten ein Wachstum einer Site schwerlich möglich ist.
Und - leider sind derartige Optimierungen Mangelware - die Kenntnis der Develeoper bezüglich Mysql und der Möglichkeiten sind so marginal das man sich offenbar lieber auf das stützt was man meint optimal zu können - PHP.
Es macht aber keinen Sinn etwas mit PHP auszugleichen was man sich dann portionsweise via Mysql holen muss.
Keine Kommentare:
Kommentar veröffentlichen