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)

Samstag, 16. Mai 2015

Cmsms: Unsinns - Code macht es nicht besser

In der aktuellen 1 er Version -> include.php findet sich solch Unsinnscode:

$tpl_name = trim($_SESSION['cms_preview']);
                $fname = '';
                if (is_writable($config["previews_path"])) {
                    $fname = implode(DIRECTORY_SEPARATOR, array($config["previews_path"], $tpl_name));
                } else {
                    $fname = implode(DIRECTORY_SEPARATOR, array(TMP_CACHE_LOCATION, $tpl_name));
                }
                $fname = $tpl_name;


und das sind nicht die einzigen Stellen in denen es unsinnigen Code gibt.

Freitag, 15. Mai 2015

Cmsmadesimple - Sicher oder nicht sicher ?

Cmsmadesimple verwendet in der aktuellen 1 er Version einen Funktion 'sanitize_input_array' um $_GET und $_SERVER zu putzen:

// sanitize $_GET
array_walk_recursive($_GET, 'sanitize_input_array');
// sanitize $_SERVER
array_walk_recursive($_SERVER,'sanitize_input_array');

Sie wird in der include.php aktiviert und sonst nirgendwo.

$_POST und $_REQUEST werden nicht gefiltert !!

In der index.php gibt es die interessante Stelle (nach der Einbindung include.php)

$params = array_merge($_GET, $_POST);
$smarty = $gCms->GetSmarty();
$smarty->params = $params;

array_merge hat die Eigenschaft das Keys des zweiten Arrays die identisch in dem ersten vorhanden sind, den ersten überschreiben.

Das bedeutet - ungefilterte $_POST gelangen in die $params und können bei Schlüsselgleichheit $_GET überschreiben.

$params wird mit Smarty reichlich verwendet.

Mit anderen Worten  hier gibt es eine Einflugschneise für böse Buben die ein wenig programmieren können.

$_POST kommt rund 678 mal im Quellcode vor, $_REQUEST 129 mal.

Nachtrag:

Die Funktion welche den Schutz bringen soll ist ein Witz:

function sanitize_input_array(&$value, $key)
{
  $value = preg_replace('/\<\/?script[^\>]*\>/i', '', $value); //the i makes it caseinsensitive
  $value = preg_replace('/javascript\:/i', '', $value); //the i makes it caseinsensitive
}
Sie deckt noch nicht einmal annähernd das ab was böse Buben so fabrizieren.

Mangelndes Interesse der Dev's sorgt für lahme Leistung

Die letzte noch gültige 1 er Version zeigt deutlich das eine Optimierung die mit wenigen Handgriffen zu machen ist die Performance im Frontend um rund 8,8 Prozent gesteigert werden kann.
Das was da gemacht wurde ist schlichtweg Ausnutzung von PHP und bedingt keinerlei Veränderung der Systematik.
Die Änderungen wurden zudem nur in einem einzigen Script - der index.php vorgenommen.

Das bedeutet - die Developer von Cmsmadesimple haben nur noch wenig Interesse an dem Produkt selbst.

Original

ab -kc 100 -t 30 http://localhost/cmsms1/
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 1745 requests


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

Document Path:          /cmsms1/
Document Length:        14514 bytes

Concurrency Level:      100
Time taken for tests:   30.003 seconds
Complete requests:      1745
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      26166000 bytes
HTML transferred:       25399500 bytes
Requests per second:    58.16 [#/sec] (mean)
Time per request:       1719.383 [ms] (mean)
Time per request:       17.194 [ms] (mean, across all concurrent requests)
Transfer rate:          851.67 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   2.1      0      11
Processing:   884 1671 263.0   1651    2706
Waiting:      852 1589 256.7   1558    2653
Total:        884 1672 263.0   1651    2716

Percentage of the requests served within a certain time (ms)
  50%   1651
  66%   1751
  75%   1819
  80%   1859
  90%   2001
  95%   2133
  98%   2348
  99%   2499
 100%   2716 (longest request)
Geänderte  Version

:/var/www/html/cmsms2$ sudo /etc/init.d/apache2 restart
ab -kc 100 -t 30 http://localhost/cmsms2/
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 1888 requests


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

Document Path:          /cmsms2/
Document Length:        14514 bytes

Concurrency Level:      100
Time taken for tests:   30.007 seconds
Complete requests:      1888
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      28259280 bytes
HTML transferred:       27431460 bytes
Requests per second:    62.92 [#/sec] (mean)
Time per request:       1589.363 [ms] (mean)
Time per request:       15.894 [ms] (mean, across all concurrent requests)
Transfer rate:          919.68 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.3      0       6
Processing:    87 1545 299.6   1567    2354
Waiting:       83 1477 283.0   1499    2311
Total:         89 1546 298.8   1567    2355

Percentage of the requests served within a certain time (ms)
  50%   1567
  66%   1666
  75%   1730
  80%   1763
  90%   1859
  95%   1959
  98%   2053
  99%   2128
 100%   2355 (longest request)
---------------------------------------

Nachtrag:
Nach den ersten zwei Optimierungen in der include.php ergab sich sofort eine weitere bemerkbare Verbesserung - dennoch reicht die Gesamtleistung bei weitem nicht aus um professionellen Ansprüchen zu genügen.

ab -kc 100 -t 30 http://localhost/cmsms2/
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 1959 requests


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

Document Path:          /cmsms2/
Document Length:        14514 bytes

Concurrency Level:      100
Time taken for tests:   30.013 seconds
Complete requests:      1959
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      29350776 bytes
HTML transferred:       28490982 bytes
Requests per second:    65.27 [#/sec] (mean)
Time per request:       1532.079 [ms] (mean)
Time per request:       15.321 [ms] (mean, across all concurrent requests)
Transfer rate:          955.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.5      0       8
Processing:    78 1487 273.9   1494    2215
Waiting:       75 1422 257.8   1422    2126
Total:         85 1487 272.9   1494    2215

Percentage of the requests served within a certain time (ms)
  50%   1494
  66%   1582
  75%   1643
  80%   1683
  90%   1779
  95%   1871
  98%   1959
  99%   2043
 100%   2215 (longest request)


Mittwoch, 13. Mai 2015

Cmsmadesimple Developer stellt Unterstützung deutscher User ein

Nun spricht er es endlich aus, was seit Jahren von ihm gängige Praxis war - der Hauptentwickler von Cmsmadesimple stellt die Unterstützung der deutschen User ein:

Sorry,  I will not support, communicate with, or interact with any users of
cmsmadesimple.de. 

Dann folgen seinen Worten eine wüste Ansammlung von Vorwürfen - die aber sind allesamt unbegründet.

Nach fast einem Jahrzehnt des relativen Nichtstuns - was den Fortschritt von Cmsmadesimple betrifft -  seiner kompletten Immunität bei konkreten Verbesserungsvorschlägen und seinem narzistischem Verhalten und seiner Kritikunfähigkeit will er sich seinem Ärger Luft machen.

Ihm ist nicht klar geworden das der Ton derjenigen die bei Cmsmadesimple Stillstand sehen natürlich härter wird, wenn man sich so verhält wie Calguy1000 es macht.

Nun meint er also sich mit einer solchen Aktion aus dem Jammertal zu führen.

Klar ist - nicht nur die Unterstützung der deutschen Fraktion lahmt seit Jahren sondern auch die aller Anwender.
Ich schrieb darüber bereits.

Die für den deutschen Bereich im Forum der Org eingesetzte Moderatorin glänzt durch Ahnungslosigkeit und durch Abwesentheit.

Schaut man ganz genau hin so ist Cmsmadesimple bereits im Zerfall begriffen.
Developer sind teils seit Jahren nicht mehr aktiv und verschwunden, werden aber noch geführt.
Übersetzungen sind nur noch so weit vorhanden wie altes Material es abdeckt.

Wer mit einem CMS System auf deutsche Anwender verzichtet, weil sie ihm nicht passen, der wirft die Verbreitungsmöglichkeit einer der stärksten Volkswirtschaften der Welt in den Müll und genau das wird auch von den Anwenden der Nachbarländer gesehen.

Robert Champbell hat wieder mal einen sehr starken Beweis seiner Unfähigkeit geliefert.


Montag, 11. Mai 2015

Cmsmadesimple an Funktionitis erkrankt

Unter http://forum.cmsmadesimple.de/viewtopic.php?id=4400 beklagt sich der Betreiber der deutschen Cmsms - Fraktion über die Funktionitis bei Cmsmadesimple die es an allen möglichen Stellen gibt.

Zitat:

"Funktionitis" beschreibt eine Erkrankung, die grundsätzlich alle Teile des Systems befallen kann, und zeichnet sich insbesondere dadurch aus, dass einfache Dinge klammheimlich durch komplexe, aber weitestgehend sinnbefreite Funktionen ersetzt werden, ganz nach dem Motto "Warum einfach, wenn es auch umständlich geht".

Und er hat Recht damit.

Mal ein eigenes Beispiel aus dem Cmsmadesimple Fundus diese Funktion  hier:

function cms_join_path() {
    $args = func_get_args();
    return implode(DIRECTORY_SEPARATOR, $args);
}

In der aktuellen V2 Beta taucht sie 118 mal auf.

Mit folgendem Testscript und dem Apache Benchmark testen wir mal dieses Script:


<?php
$config['root_path']=dirname(__FILE__);
function cms_join_path() {
    $args = func_get_args();
    return implode(DIRECTORY_SEPARATOR, $args);
}

echo cms_join_path($config['root_path'], 'lib', 'assets', 'templates');
#echo implode(DIRECTORY_SEPARATOR,array($config['root_path'], 'lib', 'assets', 'templates'));
?>

Beim ersten Durchlauf rufen wir die Funktion auf, beim zweiten wechseln wir die Auskommentierung und rufen die eigentliche Musik direkt auf.

Der Unterschied ist vorzeigbar.

Original liefert

Requests per second:    7094.56 [#/sec] (mean)
Time per request:       14.095 [ms] (mean)
Time per request:       0.141 [ms] (mean, across all concurrent requests)
Transfer rate:          1680.61 [Kbytes/sec] received

die bessere Art liefert

Requests per second:    7657.94 [#/sec] (mean)
Time per request:       13.058 [ms] (mean)
Time per request:       0.131 [ms] (mean, across all concurrent requests)

Die bessere Variante schafft fast 600 Request's mehr als das Original.

Tatsache ist das die DE Fraktion Recht hat - so etwas in der Art gibt es zahlreich im Quellcode.
Von Performanceprogrammierung haben die Dev's von Cmsmadesimple keine Ahnung.

Wahrscheinlich nimmt sich auch rein niemand  die paar Momente Zeit um mal Benchmarks zu fahren.






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.