Geschwindigkeitsproblem

Deutschsprachiger Support für CMS Made Simple
cyberman

Re: Geschwindigkeitsproblem

Post 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%.
cyberman

Re: Geschwindigkeitsproblem

Post 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.
NaN

Re: Geschwindigkeitsproblem

Post by NaN »

Was passiert denn, wenn man in der config.php

Code: Select all

$config['use_adodb_lite'] = true;
auf

Code: Select all

$config['use_adodb_lite'] = false;
setzt?

Funktioniert CMSms ohne AdoDB (lite) überhaupt?
wilfried

Re: Geschwindigkeitsproblem

Post 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).
NaN

Re: Geschwindigkeitsproblem

Post 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).
wilfried

Re: Geschwindigkeitsproblem

Post 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.
Last edited by wilfried on Wed Dec 19, 2007 7:37 pm, edited 1 time in total.
crossi
Forum Members
Forum Members
Posts: 11
Joined: Thu Dec 20, 2007 7:27 am

Re: Geschwindigkeitsproblem

Post 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
wilfried

Re: Geschwindigkeitsproblem

Post 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.
cyberman

Re: Geschwindigkeitsproblem

Post by cyberman »

NaN wrote: (falls es dort beschrieben wird).
Wurde es nicht ...
cyberman

Re: Geschwindigkeitsproblem

Post 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"  8) - 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 ...
wilfried

Re: Geschwindigkeitsproblem

Post 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.
wilfried

Re: Geschwindigkeitsproblem

Post 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.
cyberman

Re: Geschwindigkeitsproblem

Post by cyberman »

Besten Dank für den Tipp.

Mit einer simplen Seite hat es allerdings nicht all zu viel gebracht :-\ ...
crossi
Forum Members
Forum Members
Posts: 11
Joined: Thu Dec 20, 2007 7:27 am

Re: Geschwindigkeitsproblem

Post 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
wilfried

Re: Geschwindigkeitsproblem

Post 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.
Post Reply

Return to “German - Deutsch”