Samstag, 9. Mai 2015

Die ewig gestrigen Cmsmadesimple Dev's

Während die deutsche Fraktion das macht was ich vor 10 Jahren schon gemacht habe, nämlich den Code nach Performancebremsen und Qualitätsmängel zu durchsuchen, verarbeiten die Dev's ungestört den alten Mist.

Ich beziehe mich da auf die kommende Cmsmadesimple V 2.

Beispiel nur mal aus der index.php

Code:

$orig_memory = (function_exists('memory_get_usage')?memory_get_usage():0);

Aber laut PHP:
5.2.1Compiling with --enable-memory-limit is no longer required for this function to exist.
PHP 5.2 wird aber von Cmsmadesimple nicht mehr unterstützt.

Was also hat das in dieser Form noch im neuesten Code zu suchen ?

Es reicht wenn man es so schreiben würde:

$orig_memory = memory_get_usage();

Die Unterschiede in der Leistung sind deutlich sichtbar und das obwohl ohne debug diese Abfrage nur 1x realisiert wird.

Apache Benchmark - Original

sudo /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.
ab -kc 100 -t 30 http://localhost/cmsms/
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 1413 requests


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

Document Path:          /cmsms/
Document Length:        19767 bytes

Concurrency Level:      100
Time taken for tests:   30.004 seconds
Complete requests:      1413
Failed requests:        0
Non-2xx responses:      1417
Keep-Alive requests:    0
Total transferred:      28624817 bytes
HTML transferred:       28009839 bytes
Requests per second:    47.09 [#/sec] (mean)
Time per request:       2123.442 [ms] (mean)
Time per request:       21.234 [ms] (mean, across all concurrent requests)
Transfer rate:          931.67 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.7      0       9
Processing:   311 2040 426.0   2062    3786
Waiting:      304 1982 412.9   2009    3631
Total:        315 2041 425.0   2062    3786

Percentage of the requests served within a certain time (ms)
  50%   2062
  66%   2185
  75%   2260
  80%   2320
  90%   2492
  95%   2635
  98%   2855
  99%   3005
 100%   3786 (longest request)


optimiert

sudo /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.
czarnowski@Cz1:~$ sudo /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.
czarnowski@Cz1:~$ ab -kc 100 -t 30 http://localhost/cmsms/
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 1482 requests


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

Document Path:          /cmsms/
Document Length:        19767 bytes

Concurrency Level:      100
Time taken for tests:   30.024 seconds
Complete requests:      1482
Failed requests:        0
Non-2xx responses:      1490
Keep-Alive requests:    0
Total transferred:      30099490 bytes
HTML transferred:       29452830 bytes
Requests per second:    49.36 [#/sec] (mean)
Time per request:       2025.903 [ms] (mean)
Time per request:       20.259 [ms] (mean, across all concurrent requests)
Transfer rate:          979.02 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       2
Processing:   230 1950 395.5   1959    2916
Waiting:      224 1893 381.7   1903    2848
Total:        233 1950 395.2   1959    2916

Percentage of the requests served within a certain time (ms)
  50%   1959
  66%   2098
  75%   2192
  80%   2243
  90%   2399
  95%   2524
  98%   2654
  99%   2732
 100%   2916 (longest request)

Die Differenz ist für diese eine aktive Stelle sehr hoch.

Dennoch zeigt der Benchmark auch etwas anderes mehr als deutlich - Cmsmadesimple ist auch in der Version 2 nicht dafür geeignet eine Anzahl von 100 Besuchern gleichzeitig bedienen zu können.

Die Gründe

  • sehr viele Programmteile sind nicht professionell ausgeführt
  • Die Gesamtkonzeption ist an entscheidenden Stellen absolut ungeeignet für performante Ausführung
  • es werden ungeeignete Fremdlibs verwendet

Und damit ist dieses CMS praktisch zu nichts zu gebrauchen - es sei denn man hat 5 Besucher in der Stunde und auch die könnten wegen Langsamkeit noch weg laufen.

Andere CMS  legen da eine ganz andere Leistung vor - hier als Beispiel PowerCMS in der aktuellen Entwicklerversion:


 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)

Da liegen Welten dazwischen.

Keine Kommentare:

Kommentar veröffentlichen