Page 2 of 3
Re: Geschwindigkeitsproblem
Posted: Wed Dec 19, 2007 4:19 pm
by cyberman
NaN wrote:
Wenn die DB NICHT daran Schuld ist, was dann?
Zu einem Teil dürfte auch AdoDB (lite) daran beteiligt sein.
Vor ca. 2 Jahren gab es dazu bereits mal eine Diskussion, in der ein User von AdoDB auf MySQL umgestellt hat - mit einem Performance-Gewinn von 40%.
Re: Geschwindigkeitsproblem
Posted: Wed Dec 19, 2007 4:24 pm
by cyberman
wilfried wrote:
Die Tuninganleitung bringt Linderung ist aber auch nur halbherzig ausgeführt.
Jedermann ist eingeladen, diese Liste zu erweitern - ich hab die Tipps (als Programmier-Laie) auch nur zusammengetragen, damit die User nicht im ganzen Forum danach suchen müssen.
Re: Geschwindigkeitsproblem
Posted: Wed Dec 19, 2007 4:30 pm
by NaN
Was passiert denn, wenn man in der config.php
auf
Code: Select all
$config['use_adodb_lite'] = false;
setzt?
Funktioniert CMSms ohne AdoDB (lite) überhaupt?
Re: Geschwindigkeitsproblem
Posted: Wed Dec 19, 2007 4:42 pm
by wilfried
Dann müsste man Adodb (DIE GROSSE ORIGINALVERSION) einsetzen , eines von beiden wird benötigt.
ADODB ist inzwischen stabiler als Lite aber verbraucht mehr RAM und ist langsamer.
Ein Sache die vielleicht etwas bringen könnte wäre der Einsatz von Sqlite - erfordert aber PHP 5..XX und da ist selbst die aktuelle CMSMS Version noch Buggy.
Adodb Lite wäre nach einer kleinen Veränderung einsetzbar (siehe Bug - Meldungen im DEV).
Re: Geschwindigkeitsproblem
Posted: Wed Dec 19, 2007 4:58 pm
by NaN
cyberman wrote:
Vor ca. 2 Jahren gab es dazu bereits mal eine Diskussion, in der ein User von AdoDB auf MySQL umgestellt hat - mit einem Performance-Gewinn von 40%.
Ähm... könntest Du mir den Link dazu mal posten. Wüsste gerne wie er das hinbekommen hat (falls es dort beschrieben wird).
Re: Geschwindigkeitsproblem
Posted: Wed Dec 19, 2007 7:14 pm
by wilfried
Dann viel Spass - eine Menge Arbeit - das habe ich mal gemacht - musst alle Abfragen komplett umstellen.
Das Ergebnis war, da aber gefruchtet hat es hier nicht.
Wenn du gut PHP kannst dann ist es nur eine persönliche Zeitfrage oder nimmst ein anderes fertiges Projekt.
Und so sind die Werte aus dem fertigen Projekt:
Verbrauch normal:1003668 Verbrauch Spitze:1572864 Kein Supercache in Verwendung SQL Queries:3 Gesamtzeit:0.02143383026123
Verbrauch normal:254784 Verbrauch Spitze:262144 Supercache in Aktion SQL Queries:0 Gesamtzeit:0.00090885162353516
Hätte man hier auch so oder ähnlich haben können.
Re: Geschwindigkeitsproblem
Posted: Thu Dec 20, 2007 8:32 am
by crossi
Hallo allerseits,
ich kann Wilfrieds Erfahrungen bestaetigen: ich arbeite ebenfalls erst seit wenigen Tagen mit cmsms und ebenfalls kenne ich mich mit CMS und aehnlichen Systemloesungen wie Shops etc. gut aus. Ich denke, dass man ehrlich erkennen muss, dass der Erfolg dieses CMS von einer verbesserten Performance abhaengig ist. Selbst die Homepage des cmsms ist doch, bei dem *bissel Mist* keine Referenz. Sowas laeuft in dieser Groessenordnung (wenig content, wenige images) auch bei Billighostern blitzartig. Eine Ursache hat Wilfried genannt, die Mengen an SQL, fuer mich insbesondere auffaellig die Handhabung der templates und stylesheets.
Das ist kein Gemecker, aber wie ich hier im Forum beim ersten einlesen erkennen konnte, verschliesst man sich ein wenig dieser Problematik und schiebt sie gern auf die Hoster. Andererseits ist man sich der Problematik offensichtlich doch bewusst, weswegen es gleich hier oben eine Anleitung zur Performanceverbesserung gibt

)
Gruss Torsten
Re: Geschwindigkeitsproblem
Posted: Thu Dec 20, 2007 11:11 am
by wilfried
Andererseits ist man sich der Problematik offensichtlich doch bewusst, weswegen es gleich hier oben eine Anleitung zur Performanceverbesserung gibt
Das ist ja die Quizfrage - denn z.B. wurde von den gesammelten Tuninghinweisen nichts offiziell realisiert obwohl es danach einige Versionen gab.
Somit könnte die Frage noch offen sein.
Re: Geschwindigkeitsproblem
Posted: Thu Dec 20, 2007 10:06 pm
by cyberman
NaN wrote:
(falls es dort beschrieben wird).
Wurde es nicht ...
Re: Geschwindigkeitsproblem
Posted: Thu Dec 20, 2007 10:11 pm
by cyberman
wilfried wrote:
Andererseits ist man sich der Problematik offensichtlich doch bewusst, weswegen es gleich hier oben eine Anleitung zur Performanceverbesserung gibt
Das ist ja die Quizfrage -
Es muss richtig heißen, "war ich mir der Problematik bewusst"

- soll heißen, da ich im täglichen Support die Probleme gesehen habe, hab ich die entsprechenden Tipps zusammengetragen - war eine reine Privatinitiative ohne Abstimmung mit Ted & Co, als ich nur Moderator war ...
Re: Geschwindigkeitsproblem
Posted: Fri Dec 21, 2007 11:24 am
by wilfried
Da an der 1.2.X wohl kaum noch etwas getan werden wird, ist es überflüssig darauf zu hoffen, das mit den gesammelten Anregungen überhaupt noch etwas passieren wird.
Bei dem was ich bislang an der 2 er Version sehen konnte (Einschränkung: da gibt es ja noch nicht viel zu sehen) ist man dabei die gleichen Fehler in ein neues Klassengewand (PHP5) zu packen und das wäre ein unverzeihbarer riesiger Fehler, der , wenn sich da wirklich nichts tut, eine katastrophale Auswirkung auf das Projekt haben wird.
Wenn die 2 er Version kein Erfolg wird, dann sehe ich das Projekt hier schon scheitern und das würde ich keineswegs begrüßen.
Ansonsten - wenn Developer nichts von dem mit bekommen, was in den Foren an Problemen besprochen wird, weil sie vielleicht die Sprache X selbst nicht verstehen können, könnte ein Moderator oder gerade ein Supportleiter da mal kräftig auf den Tsich hauen und das in einer englischen Kurzfassung vorlegen.
Die Zeitstrecke ist lang, die 2 er Version kommt sehr viel später als mal geplant.
Die jetzige 1.2 er Version ist nicht besonders gelungen, die vorhandenen BUG Meldungen werden wohl auch nicht mehr abgearbeitet - man muss wohl oder übel mit der 1.2 er diese Zeitstrecke überwinden.
Viele Module funktionieren aktuell nicht mehr, die Autoren machen da wohl auch nur noch wenig bis nix da man ja die 2 er Version erwartet hatte bzw. die ersten Vorversionen - aber das ist zeitlich gesehen auch in die Hosen gegangen.
Mein Rat im Blogsystem - die 10 wichtigsten Module in einer gemeinschaftlichen Aktion auf einen stabilen und lauffähigen Status zu bringen um die Zeit gut überbrücken zu können wurde natürlich nicht berücksichtigt - man hat die Tragweite einfach nicht erkannt.
Man kann nur hoffen, das User nicht in Scharen abhauen und nicht mehr vorhanden sind wenn die 2 er Version kommt
.
PHP 5.2 hat z.Z. ca. 15% Marktanteil. CMSMS hat sich verpflichtet die neue Version 2. so zu gestalten, das PHP 5.2 erforderlich ist.
Das bedeutet - allein schon aus dieser Fehlentscheidung heraus verliert man vom großen Kuchen ein erhebliches Stück.
CMSMS so wie sie jetzt ist, läuft problemlos auch unter PHP 6 Entwicklerversion ebenso wie unter PHP 4.3X - es war also keine Not sich auf PHP 5.2 zu verpflichten.
Kommen andere Momente dazu ist der Untergang perfekt und das wäre ein Jammer.
Re: Geschwindigkeitsproblem
Posted: Sat Dec 29, 2007 3:16 pm
by wilfried
Hier mal eine veränderte index.php von 1.2.2 zum testen - hat bei mir zwischen 5 und 23 % an Zeit gespart (unter Windows)..
Code: Select all
<?php
#CMS - CMS Made Simple
#(c)2004 by Ted Kulp (wishy@users.sf.net)
#This project's homepage is: http://cmsmadesimple.sf.net
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#$Id: index.php 4217 2007-10-07 15:13:13Z wishy $
$dirname = dirname(__FILE__);
require_once($dirname.'/fileloc.php');
global $gCms;
@ob_start();
if (!isset($_SERVER['REQUEST_URI']) && isset($_SERVER['QUERY_STRING']))
$_SERVER['REQUEST_URI'] = $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'];
if (file_exists(TMP_CACHE_LOCATION.'/SITEDOWN'))
{
echo "<__html><head><title>Maintenance</title></head></__body><p>Site down for maintenance.</p><__body></__html>";
exit;
}
require_once($dirname.'/fileloc.php');
require_once($dirname.'/include.php'); #Makes gCms object
global $gCms;
$params = array_merge($_GET, $_POST);
$smarty = &$gCms->smarty;
$smarty->params = $params;
$smarty->compile_check = false;
$page = '';
if (isset($params['mact']))
{
$ary = explode(',', cms_htmlentities($params['mact']), 4);
$smarty->id = (isset($ary[1])?$ary[1]:'');
}
else
$smarty->id = (isset($params['id'])?intval($params['id']):'');
if (isset($smarty->id) && isset($params[$smarty->id . 'returnid']))
$page = $params[$smarty->id . 'returnid'];
else if (isset($config["query_var"]) && $config["query_var"] != '' && isset($_GET[$config["query_var"]]))
{
$page = $_GET[$config["query_var"]];
if ($config['page_extension'] != '' && endswith($page, $config['page_extension']))
$page = substr($page, 0, strlen($page) - strlen($config['page_extension']));
}
else
{
$calced = cms_calculate_url();
if ($calced != '')
$page = $calced;
}
$page = rtrim($page, '/');
if (strpos($page, '/') !== FALSE)
{
$routes =& $gCms->variables['routes'];
$matched = false;
foreach ($routes as $route)
{
$matches = array();
if (preg_match($route->regex, $page, $matches))
{
//Now setup some assumptions
if (!isset($matches['id']))
$matches['id'] = 'cntnt01';
if (!isset($matches['action']))
$matches['action'] = 'defaulturl';
if (!isset($matches['inline']))
$matches['inline'] = 0;
if (!isset($matches['returnid']))
$matches['returnid'] = ''; #Look for default page
if (!isset($matches['module']))
$matches['module'] = $route->module;
//Get rid of numeric matches
foreach ($matches as $key=>$val)
{
if (is_int($key))
unset($matches[$key]);
else
if ($key != 'id')
$_REQUEST[$matches['id'] . $key] = $val;
}
//Now set any defaults that might not have been in the url
if (isset($route->defaults) && count($route->defaults) > 0)
{
foreach ($route->defaults as $key=>$val)
{
$_REQUEST[$matches['id'] . $key] = $val;
if (array_key_exists($key, $matches))
$matches[$key] = $val;
}
}
//Get a decent returnid
if ($matches['returnid'] == '') {
$contentops =& $gCms->GetContentOperations();
$matches['returnid'] = $contentops->GetDefaultPageID();
}
$_REQUEST['mact'] = $matches['module'] . ',' . $matches['id'] . ',' . $matches['action'] . ',' . $matches['inline'];
$page = $matches['returnid'];
$smarty->id = $matches['id'];
$matched = true;
}
}
if (!$matched)
$page = substr($page, strrpos($page, '/') + 1);
}
if ($page == '')
{
$contentops =& $gCms->GetContentOperations();
$page =& $contentops->GetDefaultContent();
}
else
$page = preg_replace('/\</','',$page);
$pageinfo = PageInfoOperations::LoadPageInfoByContentAlias($page);
if (isset($pageinfo) && $pageinfo !== FALSE)
{
$gCms->variables['pageinfo'] =& $pageinfo;
if( isset($pageinfo->template_encoding) &&
$pageinfo->template_encoding != '' )
set_encoding($pageinfo->template_encoding);
$gCms->variables['content_id'] = $pageinfo->content_id;
$gCms->variables['page'] = $page;
$gCms->variables['page_id'] = $page;
$gCms->variables['page_name'] = $pageinfo->content_alias;
$gCms->variables['position'] = $pageinfo->content_hierarchy;
$contentops =& $gCms->GetContentOperations();
$gCms->variables['friendly_position'] = $contentops->CreateFriendlyHierarchyPosition($pageinfo->content_hierarchy);
$smarty->assign('content_id', $pageinfo->content_id);
$smarty->assign('page', $page);
$smarty->assign('page_id', $page);
$smarty->assign('page_name', $pageinfo->content_alias);
$smarty->assign('page_alias', $pageinfo->content_alias);
$smarty->assign('position', $pageinfo->content_hierarchy);
$smarty->assign('friendly_position', $gCms->variables['friendly_position']);
}
else if (get_site_preference('enablecustom404') == '' || get_site_preference('enablecustom404') == "0")
{
ErrorHandler404();
exit;
}
$html = '';
$cached = '';
if (isset($_GET["print"]))
$html = $smarty->fetch('print:'.$page, '', $pageinfo->template_id) . "\n";
else
{
#If this is a case where a module doesn't want a template to be shown, just disable caching
if (isset($smarty->id) && $smarty->id != '' && isset($_REQUEST[$smarty->id.'showtemplate']) && $_REQUEST[$smarty->id.'showtemplate'] == 'false')
$t='template:notemplate';
else
$t= 'template:'.$pageinfo->template_id;
$html = $smarty->fetch($t) . "\n";
}
reset($gCms->modules);
while (list($key) = each($gCms->modules))
{
$value =& $gCms->modules[$key];
if ($gCms->modules[$key]['installed'] == true && $gCms->modules[$key]['active'] == true)
{
$gCms->modules[$key]['object']->ContentPostRenderNonCached($html);
$gCms->modules[$key]['object']->ContentPostRender($html);
}
}
header("Content-Type: " . $gCms->variables['content-type'] . "; charset=" . (isset($pageinfo->template_encoding) && $pageinfo->template_encoding != ''?$pageinfo->template_encoding:get_encoding()));
echo $html;
@ob_flush();
?>
Ihr könnt ja mal probieren und melden was es bei euch gebracht hat.
Re: Geschwindigkeitsproblem
Posted: Fri Jan 04, 2008 8:49 pm
by cyberman
Besten Dank für den Tipp.
Mit einer simplen Seite hat es allerdings nicht all zu viel gebracht

...
Re: Geschwindigkeitsproblem
Posted: Sat Jan 05, 2008 8:56 am
by crossi
Hallo allerseits,
cyberman wrote:
Mit einer simplen Seite hat es allerdings nicht all zu viel gebracht

...
ich konnte auch nichts grossartiges feststellen, auf 2 Installationen.
Gruss Torsten
Re: Geschwindigkeitsproblem
Posted: Sat Jan 05, 2008 10:52 am
by wilfried
Meine Messungen haben ein Minimum von 5% ergeben und das bei den 10 Standardmodulen.
Das macht den Kohl natürlich nicht fett aber es ist besser als nix.
Messen muss man übrigens mit einer Installation, die nicht abhängig ist von Zugriffen anderer ist, also am besten lokal und am besten unter Linux unter lokalem und somit exklusiven Webserver da diese Zeiten realer sind als unter Windows gemessen.
Misst man live gehen die Ersparnisse in den Schwankungen durch Belastung des Webservers u.U. unter (Thema 100 Domains ? auf einem Webserver)
Cyberman liegen ja noch 2 weitere Vorschläge vor, die einfach einzubringen sind (debug_buffer und die Entfernung des Eventhandlers) - könnte er ja mal posten.
Das es mit massiven Eingriffen auch wesentlich schneller geht, wurde ja beweisen (siehe mein Projekt).
Profis können sich ja eine Runtime anfertigen - die so richtig etwas bringt.
Da reden wir von rund 75% und mehr Zeitersparnis und Reduzierung auf etwa 2 MB RAM Bedarf (Frontend) und zusätzlich die Möglichkeit des Einsatzes von Supercache (Ganzseitencache), die eine Zeit um die 1 Millisekunde bringt - das sind alles reale Werte und nichts aus Fantasialand - da ich das schon gemacht habe (Basis Version 1.2).
Ich sehe es als Aufgabe der Developer hier an, da etwas zu machen - ich werde da nix weiter machen - habe mit meinem eigenen Projekt genügend zu tun.
Version 1.X ist für mich sowieso in der Warteschleife zur Beerdigung, da 2.X ja komplett anders sein soll.
Also was sollte man sich da eigentlich noch für Mphe mit einer 1.X er Version machen, hat man doch noch jede Menge Arbeit vor sich, wenn die 2.er Version kommt.