Speicherbedarf der CMS (Memory) (RAM)

Deutschsprachiger Support für CMS Made Simple
Post Reply
Piratos

Speicherbedarf der CMS (Memory) (RAM)

Post by Piratos »

Der aktuelle Speicherbearf der CMS liegt bei rund 7,3 MB im Besucherteil aber auch im Adminteil (7,22MB).

Und - das gilt nur für eine Handvoll Module und Plugins, die genutzt werden.

Man muss wissen, das der überwiegende Teil aller deutschen Domains und damit vermutlich auch der Domains im Rest der Welt auf 8 MB Speicherbedarf bei der Scriptgröße eingestellt ist.

Der Speicherverbaruch läßt sich dann leicht ermitteln, wenn PHP über die Funktion memory_get_usage verfügt und das dürfte zunmindest bei allen Linuxrechnern der Fall sein.

Das beliebte Xampp für Windows verfügt nicht über diese Funktion.

Im Besucherteil    ist die Abfrage bereits vordefiniert, um sie sehen zu können, muss man bei der Anweisung lediglch die Auskommentierung entfernen.

Im Adminteil ist es am einfachsten, wenn man in der Datei header.php ganz unten so ändert:

echo memory_get_usage()." bytes of memory
";
?>


Dann kann man oben unterhalb der Navigationsleiste den Verbrauch sehen, der zwar an dieser Stelle geschmeichelt ist, da danach noch diverse PHP - Teile aktiv werden, aber für den Zweck reicht es.

Sicher gibt es einige die sich nicht für das Thema interessieren - ich bräuchte das auch nicht, denn ich bin da erheblich besser ausgestattet  - die meisten halt nicht.

Und - die Grenze der Ausbaufähigkeit ist langsam aber sicher erreicht, insbesondere weil alle Werte nur statisch sind.

Tatsächlich können PHP Scripte während ihres Ablaufes mehr Speicher benötigen, als am Ende abgerechnet  wurde - Speicher wird ja auch wieder frei gegeben.

Der Speichebedarf wächst z.B. mit der Menge der Inhalte.

Was passiert denn nun, wenn eine Überschreitung passiert  ?

Die Scriptausführung hält mit einer Fehlermeldung an und das  war's - die CMS ist damit an der Stelle nicht mehr zu gebrauchen. Wird nicht irgend etwas entfernt, wird der Fehler immer wieder auftreten.

Weiterer Ausbau

So schön das mit der Ecke für Developer auch ist, es wird ja genutzt und es kommt immer mehr hinzu.
Das bedeutet aber auch, das mehr davon eingesetzt wird und die Säge schneller klemmen wird, als man denken kann.

Adodb ist ein Speicherfresser ohne gleichen  - ca. 1,3 MB nur für das Öffnen der Datenbank, wozu Mysql direkt gerade mal 1024 Bytes benötigt.

Da wäre eine EInsparmöglichkeit.

Und man sollte die Developer zwingen, Angaben zum RAM - Bedarf zu machen (ich fange damit an), damit ein Nutzer die Chance einer Entscheidung hat.

Welche Ideen gibt es noch ???
Piratos

Re: Speicherbedarf der CMS (Memory) (RAM)

Post by Piratos »

Adodb Lite ist keine Lösung

Das ist das Ergebnis:

Generated in 0.292727 seconds by CMS Made Simple 0.11.1 (cached) using 0 SQL queries and 7102512 bytes of memory

Installierte Module

Content2pdf
Cssmenu
Ellnav
FCKeditorX
Kalender
News
Pifaq

und Pisearch als Plugin

Original Adodb benötigt rund 7,888 MB

Es ist zwar eine Ersparnis dar, aber der Bedarf der Lite Version nur für das ölfnen der Datenbank liegt auch  bei 680 KB, der von Mysql pur bei rund 1KB. Da ist immer noch zu viel.

Die einzig wahre Lösung wäre tatsächlich Mysqwl direkt und mit Sicherheit auch die schnellste.

Auf der anderen Seite zeigt es deutlich, dass in der Programmsystematik auch die Ursache für den hohen Speicherbedarf zu sehen ist.

Ich schätze den Zeitaufwand auf rund 15 Stunden - das ist wirklich nicht viel und kann gemütlich in 14 Tagen erledigt sein (man macht es ja nebenbei).
ochsner

Re: Speicherbedarf der CMS (Memory) (RAM)

Post by ochsner »

Ich finde es ja ganz interessant das mit dem Speicher mitzuverfolgen (auch wenn es mich nicht persönlich betrifft, mein Anbieter stellt genügend Speicher zur Verfügung) - nur - wissen die Entwickler jeweils von deinen neuesten Erkenntnissen?
Piratos

Re: Speicherbedarf der CMS (Memory) (RAM)

Post by Piratos »

Ja sie wissen und zwar ziemlich im Detail:

390 Testpages show default page
Generated in 0.466536 seconds by CMS Made Simple 0.11.1 (cached) using 14 SQL queries and 9288656 bytes of memory

And here you can see the memory flow of the cms.

757872 - Start of include.php
757872- after fileloc.php
758768- after getlogger
759304- after Starting include.php
866320- after include /lib/misc.functions.php
870752- after /lib/classes/class.global.inc.php
872416- after define $gCms
872936- after include version.php
908032- after include /lib/config.functions.php
911808- after cms_config_load
1982616- after include /lib/adodb/adodb.inc.php
2224216- after make Adodb Connection
2517672- after include Smarty
2693952- after include /lib/page.functions.php
2971648- after include /lib/content.functions.php"
2997624- after include /lib/classes/class.content.inc.php
3323936- after include /lib/classes/class.content.inc.php
3717160- after include /lib/classes/class.module.inc.php
3753040- after include /lib/classes/class.group.inc.php
3828648after include /lib/classes/class.user.inc.php
3865072after include /lib/classes/class.bookmark.inc.php
3941016- after inbclude /lib/classes/class.htmlblob.inc.php
4031536- after include /lib/classes/class.template.inc.php
4082328- after include /lib/classes/class.stylesheet.inc.php
4097312- after include /lib/translation.functions.php
4097376- after include /lib/contenttypes
4318624- after while (($file = $ls->read()) != "")
5081744- aftre new Smarty()
5083864- after load_site_preferences
5083864- after issset($CMS_AD...
6833160- after LOAD_ALL_MODULES
6833280- after leaving include.php
6790360- after loading include.php - we are now in index.php
6790432- after $page =
6790432- after if ($page ==
6791584- before $smarty->is_cached =
9288432- after html = smarty->fetch(template:.pageinfo->template_id =
9288432- after if (isset($_GET[ =
9288432- after if (get_site_preference =
9288432- after if (!$cached) =
9288496- after foreach($gCms->modules as $key=>$value)
9288496- after pageinfo->template_encoding

Das Problem sind die zahlreichen Classen die ab einen gewissen Punkt explosionsartig Speicher in Anspruch nehmen - sie werden in der Basis schon zu gross angelegt und für Dinge verwendet wo ein Fliegenfurz genügen würde um die anstehende Aufgabe zu erledigen.

Mit Mysql statt Adodb könnte man das ganze um rund 1,3 MB entlasten, wäre aber auch nur ein Zeitgewinn und würde den krebskranken Patienten nur eine zeitweilige Erleichterung verschaffen  - das ist aber immerhin etwas und es bringt mehr power, da es zudem schneller ist.

PS.

Wer PHP lesen kann, der kennt nun auch genau die  Zeile , wo ausser Adodb der noch schlimmere Übeltäter sitzt, demnach bin ich guter Hoffnung, das da demnöchst etwas passieren wird - das Geschwür ist 100% Eigenleistung.
Last edited by Piratos on Sun Dec 11, 2005 9:54 am, edited 1 time in total.
Post Reply

Return to “German - Deutsch”