Dienstag, 19. Mai 2015

Cmsms und Nginx ?

Da wird Nginx von der deutschen Cmsms Fraktion in's Gespräch gebracht.

Ganz zu schweigen davon das es hier bei uns nur wenige Anbieter gibt die Nginx als Webserver anbieten, hat diese Software neben dem Vorteil erheblich mehr an Requests ausführen zu können auch den Nachteil das man nicht alles im Angebot hat was ein Apache hat.

Und Nginx ist etwas gewöhnungsbedürftig.

Wir bei Powersoftware setzen Nginx seit Jahren ein , aber auch den Apache.

Wir testen übrigens alles auf lokalen Webservern und die sind alle High Speed und natürlich mit schnellen SSD Platten ausgestattet.

Die Ergebnisse auf "normalen" Platten sind deutlich schlechter.

Was aber bringt Nginx für Cmsms ?

Nun hier einmal die aktuelle Stable Version in der Standardinstallation (Startseite als Testseite):


ab -kc 100 -t 30 http://localhost/cmsms1/index.php
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Finished 3590 requests


Server Software:        nginx/1.8.0
Server Hostname:        localhost
Server Port:            80

Document Path:          /cmsms1/index.php
Document Length:        14526 bytes

Concurrency Level:      100
Time taken for tests:   30.020 seconds
Complete requests:      3590
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      53598700 bytes
HTML transferred:       52148340 bytes
Requests per second:    119.59 [#/sec] (mean)
Time per request:       836.214 [ms] (mean)
Time per request:       8.362 [ms] (mean, across all concurrent requests)
Transfer rate:          1743.58 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.6      0       6
Processing:    35  824  83.0    839     925
Waiting:       35  821  82.8    836     923
Total:         40  824  82.4    839     925

Percentage of the requests served within a certain time (ms)
  50%    839
  66%    852
  75%    860
  80%    865
  90%    877
  95%    887
  98%    902
  99%    908
 100%    925 (longest request)

Man beachte -  die Anzahl der Requests pro Sekunde hat sich ca. verdoppelt und die durchschnittliche Zeit über alles für die Bedienung eines Requestes liegt bei knapp unter einer Sekunde.

Das ist grenzwertig - da hier rein lokal unter optimalen Verhältnissen gemessen wird - in der Realität dürfte die Wohlfühlgrenze eines Besuchers die bei der magischen 1 Sekunde liegt überschritten werden.
Mal zum Vergleich Powercms in der aktuellen Entwicklerversion:

1. Nginx
Es werden 50.000 Requests in nur 8,196 Sekunden abgeliefert.

ab -kc 100 -t 30 http://localhost/powercms/
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests


Server Software:        nginx/1.8.0
Server Hostname:        localhost
Server Port:            80

Document Path:          /powercms/
Document Length:        24053 bytes

Concurrency Level:      100
Time taken for tests:   8.196 seconds
Complete requests:      50000
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      1219250000 bytes
HTML transferred:       1202650000 bytes
Requests per second:    6100.74 [#/sec] (mean)
Time per request:       16.391 [ms] (mean)
Time per request:       0.164 [ms] (mean, across all concurrent requests)
Transfer rate:          145279.81 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       4
Processing:     5   16   2.4     16      43
Waiting:        4   16   2.4     15      43
Total:          8   16   2.4     16      43

Percentage of the requests served within a certain time (ms)
  50%     16
  66%     16
  75%     17
  80%     17
  90%     18
  95%     21
  98%     25
  99%     27
 100%     43 (longest request)
----------------------------------

Und nun Apache - es werden 50.000 Requests in 12,784 Sekunden abgeliefert.

 ab -kc 100 -t 30 http://localhost/powercms/
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests


Server Software:        Apache/2.4.10
Server Hostname:        localhost
Server Port:            80

Document Path:          /powercms/
Document Length:        24053 bytes

Concurrency Level:      100
Time taken for tests:   12.784 seconds
Complete requests:      50000
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      1220950000 bytes
HTML transferred:       1202650000 bytes
Requests per second:    3911.07 [#/sec] (mean)
Time per request:       25.568 [ms] (mean)
Time per request:       0.256 [ms] (mean, across all concurrent requests)
Transfer rate:          93266.06 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       8
Processing:     1   25  38.7     21     451
Waiting:        0   24  37.0     20     449
Total:          1   26  38.7     21     451

Percentage of the requests served within a certain time (ms)
  50%     21
  66%     23
  75%     24
  80%     25
  90%     33
  95%    112
  98%    179
  99%    207
 100%    451 (longest request)

---------------

Deutlich zu erkennen  ist die minimale Zeit, die Nginx benötigt um im Schnitt einen Request abzuliefern.

Was die deutsche Cmsms Fraktion nicht sehen will - die schlechte Konzeption und Ausführung von Cmsmadesimple was PHP betrifft ändert sich nicht und auch PHP ändert sich nicht und damit sind die Vorteile zwar vorhanden aber sie fallen entsprechend mickrig aus.

Nachtrag
Beim einschalten des Smarty Caches und Abschaltung der Smarty Kompilierungsprüfung  verbessert sich das Ergebnis wie folgt - aber man hat dann quasi rein statische Seiten:


 ab -kc 100 -t 30 http://localhost/cmsms1/index.php
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 5000 requests
Finished 8122 requests


Server Software:        nginx/1.8.0
Server Hostname:        localhost
Server Port:            80

Document Path:          /cmsms1/index.php
Document Length:        14526 bytes

Concurrency Level:      100
Time taken for tests:   30.000 seconds
Complete requests:      8122
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      121273826 bytes
HTML transferred:       117992134 bytes
Requests per second:    270.73 [#/sec] (mean)
Time per request:       369.371 [ms] (mean)
Time per request:       3.694 [ms] (mean, across all concurrent requests)
Transfer rate:          3947.68 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.2      0       3
Processing:   199  367  18.3    367     531
Waiting:      196  365  18.2    366     530
Total:        202  367  18.2    367     532

Percentage of the requests served within a certain time (ms)
  50%    367
  66%    373
  75%    376
  80%    379
  90%    384
  95%    390
  98%    400
  99%    427
 100%    532 (longest request)

Keine Kommentare:

Kommentar veröffentlichen