Jump to content
xt:Commerce Community Forum

[wichtig] 99% Cpu-last Bei Aufruf


ut2k3

Recommended Posts

Hi

Wir haben Windows 2003 Webserver mit xampp

ein shop l?uft auf oscommerce und der neue soll auf xt commerce neuestes Release laufen.

Beide Shops 27000 Artikel davon ca 3000 aktiv im Shopsystem.

Meine Frage :

Beim oscommerce l?uft alles sehr schnell und der gleiche Inhalt braucht beim xtcommerce ohne bilder ne halbe Ewigkeit.

Also wenn ich z.b. die Seite neu lade passiert 30-60 sekunden garnichts dann kommt sie schnell.

Beim Aufruf der Seite liegt die CPU-Last des Mysqlservers bei 99% f?r l?ngere Zeit ,selbst wenn die Seite schon geladen ist. Bei oscommerce aber bei 30- max 50.

Woran liegt das ?

danke f?r eure Antworten.

Link to comment
Share on other sites

Danke f?r die Info.

Aber beide Shops sind identisch im Aufbau (Bestseller, Neue Produkte), siehe vergleich:

http://www.anekado.de = osCommerce

http://xtstore.anekado.de = XTCommerce

Gleicher Server, gleiche Platte, gleiche Verzeichnistiefe.

Komisch ist, das sobald man im XT-Admin ist, das XT-Backoffice sehr schnell ist.

Auch die Seiten wie Anmelden, Impressum, AGBs usw. wo keine neue Produkte aus der Datenbank geholt werden m?ssen und angezeigt werden, sind total langsam, selbst der Shopaufruf dauert ewig.

Chache ist eingeschaltet.

Abschalten von Bestseller, Neue Produkte ist nicht gew?nscht und kann nicht Sinn sein, andere Shops mit identischen Aufbau laufen super schnell (vergleich http://shop.xadox.de). Wenns daran liegen sollte, warum l?uft dann der Shop auf osCommerce mit gleichen Einstellungen relativ schnell.

Sobald eine Seite im XT-Shop aufgerufen wird geht der Server auf Vollast (mysqlxx.exe) 100% Systemlast und das ?ber l?ngere Zeit (30-60s), beim Seitenaufruf im osCommerce geht er nur sehr kurz auf max. 20-30% (1-2s) Systemlast und sofort wieder zur?ck.

Ein paar technische Daten zum Server-System:

- nix Shared, einzel Server im Schlund Rechenzentrum

- 2,8 GHz P4

-1024 MB RAM

- schnelle Platte

- super Serverbenchmarks

- technisch ist alles OK

Bitte gebt uns Tips, wie wir der Sache auf die Schliche kommen, Danke.und gute Nacht.

anekado.de Team

XTCommerce - ShoposCommerce - Shop

Link to comment
Share on other sites

smarty braucht ne menge performance. evtl solte man hier mit ner zend engine und TTruck oder IONcube arbeiten.

probleme k?nnen schon am server sein, zb beim mysql internen SQL cache, cache tabellen zu gro? etc.

wenn das teil zu schwach ist, muss man ein SQL caching in den shop einbauen (ab v3.0 enthalten)

30.000 artikel sind eigentlich kein problem

zb http://www.best-electronics.net/ ca 60.000 datens?tze (deu-eng)

jedoch l?uft hier apache, suse und xtc:SQL cache.

Link to comment
Share on other sites

Zitat von zend.com

Zend WinEnabler? - Running PHP on Windows

The Zend WinEnabler eliminates the need for the unreliable IIS and Apache PHP modules, because it opens several PHP processes simultaneously. It saves time and CPU by utilizing a pool of PHP processes instead of launching PHP each time. Zend also leveraged its intimate knowledge of the Zend Engine to optimize its performance with the Zend WinEnabler, resulting in a fast PHP runtime environment.

---------------------------------------------------------------------------

H?ngt mit der Prozessarchitektur zusammen. Daran f?hrt aif Windows Servern kein weg vorbei.

Mit dem WinEnabler mu? es aber keine Beschr?nkungen mehr geben, hat mir zumindest ein befreundeter Sysadmin erz?hlt.

---------------------------------------------------------------------------

Bei Shopprojekten auf Linux Servern hat sich in der Vergangenheit bei gro?er Artikelanzahl in der das Generieren der Liste der "Neuen produkte" als Engpass erwiesen (hier wird ein gigantischer Array erzeugt). Nach Limitierung auf ein gesundes Mass gibt es keine Probleme - auch Shops mit >30.000 laufen auf SharedHost Paketen superschnell - auch ohne Active QC. Bei Dir liegt es aber an etwas anderem - denn Dein Warenkorb, Impressum ... ben?tigt ja auch ewig.

Ich hoffe, da? Du bald eine gute L?sung findest.

Link to comment
Share on other sites

Hallo hier der Code: "best_sellers.php"

<?php

/* -----------------------------------------------------------------------------------------

$Id: best_sellers.php,v 1.4 2004/03/25 08:31:41 fanta2k Exp $

XT-Commerce - community made shopping

http://www.xt-commerce.com

Copyright © 2003 XT-Commerce

-----------------------------------------------------------------------------------------

based on:

© 2000-2001 The Exchange Project (earlier name of osCommerce)

© 2002-2003 osCommerce(best_sellers.php,v 1.20 2003/02/10); www.oscommerce.com

© 2003 nextcommerce (best_sellers.php,v 1.10 2003/08/17); www.nextcommerce.org

Released under the GNU General Public License

-----------------------------------------------------------------------------------------

Third Party contributions:

Enable_Disable_Categories 1.3 Autor: Mikel Williams | [email protected]

Released under the GNU General Public License

---------------------------------------------------------------------------------------*/

// reset var

$box_smarty = new smarty;

$box_content='';

$box_smarty->assign('tpl_path','templates/'.CURRENT_TEMPLATE.'/');

// include needed functions

require_once(DIR_FS_INC . 'xtc_row_number_format.inc.php');

//fsk18 lock

$fsk_lock='';

if ($_SESSION['customers_status']['customers_fsk18_display']=='0') {

$fsk_lock=' and p.products_fsk18!=1';

}

if (GROUP_CHECK=='true') {

$group_check="and p.group_ids LIKE '%c_".$_SESSION['customers_status']['customers_status_id']."_group%'";

}

if (isset($current_category_id) && ($current_category_id > 0)) {

$best_sellers_query = xtc_db_query("select distinct

p.products_id,

p.products_image,

pd.products_name from " .

TABLE_PRODUCTS . " p, " .

TABLE_PRODUCTS_DESCRIPTION . " pd, " .

TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " .

TABLE_CATEGORIES . " c

where p.products_status = '1'

and c.categories_status = '1'

and p.products_ordered > 0

and p.products_id = pd.products_id

and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'

and p.products_id = p2c.products_id ".$fsk_lock."

".$group_check."

and p2c.categories_id = c.categories_id and '" . $current_category_id . "'

in (c.categories_id, c.parent_id)

order by p.products_ordered desc, pd.products_name limit " . MAX_DISPLAY_BESTSELLERS);

} else {

$best_sellers_query = xtc_db_query("select distinct

p.products_id,

p.products_image,

pd.products_name from " .

TABLE_PRODUCTS . " p, " .

TABLE_PRODUCTS_DESCRIPTION . " pd, " .

TABLE_CATEGORIES . " c

where p.products_status = '1'

and c.categories_status = '1'

".$group_check."

and p.products_ordered > 0

and p.products_id = pd.products_id ".$fsk_lock."

and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'

order by p.products_ordered desc,

pd.products_name limit " . MAX_DISPLAY_BESTSELLERS);

}

if (xtc_db_num_rows($best_sellers_query) >= MIN_DISPLAY_BESTSELLERS) {

$rows = 0;

$box_content=array();

while ($best_sellers = xtc_db_fetch_array($best_sellers_query)) {

$rows++;

$image='';

if ($best_sellers['products_image']) $image=DIR_WS_INFO_IMAGES . $best_sellers['products_image'];

$box_content[]=array(

'ID'=> xtc_row_number_format($rows),

'NAME'=> $best_sellers['products_name'],

'IMAGE' => $image,

'PRICE'=>xtc_get_products_price($best_sellers['products_id'],$price_special=1,$quantity=1),

'LINK'=> xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $best_sellers['products_id']));

}

$box_smarty->assign('box_content', $box_content);

$box_smarty->assign('language', $_SESSION['language']);

// set cache ID

if (USE_CACHE=='false') {

$box_smarty->caching = 0;

$box_best_sellers= $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_best_sellers.html');

} else {

$box_smarty->caching = 1;

$box_smarty->cache_lifetime=CACHE_LIFETIME;

$box_smarty->cache_modified_check=CACHE_CHECK;

$cache_id = $_SESSION['language'];

$box_best_sellers= $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_best_sellers.html',$cache_id);

}

$smarty->assign('box_BESTSELLERS',$box_best_sellers);

}

?>

wir haben die Box deaktiviert, der Shop wird trotzdem nicht schneller, erst wenn wir die Produkte wieder rausnehmen wird er schneller.

Habt Ihr noch andere Ideen warum der langsam gegen?ber den osCommerce ist?

Danke anekado.de

Link to comment
Share on other sites

Also ich habe mir das angeschaut wenn ich die index.php komplett ausklammerer

also so:

------------------------------------------------------

include( 'includes/application_top.php');

// create smarty elements

//$smarty = new Smarty;

// include boxes

//require(DIR_FS_CATALOG .'templates/'.CURRENT_TEMPLATE. '/source/boxes.php');

// the following cPath references come from application_top.php

$category_depth = 'top';

if (isset($cPath) && xtc_not_null($cPath)) {

$categories_products_query = xtc_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . $current_category_id . "'");

$cateqories_products = xtc_db_fetch_array($categories_products_query);

if ($cateqories_products['total'] > 0) {

$category_depth = 'products'; // display products

} else {

$category_parent_query = xtc_db_query("select count(*) as total from " . TABLE_CATEGORIES . " where parent_id = '" . $current_category_id . "'");

$category_parent = xtc_db_fetch_array($category_parent_query);

if ($category_parent['total'] > 0) {

$category_depth = 'nested'; // navigate through the categories

} else {

$category_depth = 'products'; // category has no products, but display the 'no products' message

}

}

}

/*

require(DIR_WS_INCLUDES . 'header.php');

include (DIR_WS_MODULES . 'default.php');

$smarty->assign('language', $_SESSION['language']);

$smarty->caching = 0;

$smarty->display(CURRENT_TEMPLATE . '/index.html');

$c_string='Powered by XT-Commerce';

*/

echo 'test - keine angst alles noch da, ist nur auskommentiert';

echo $modified;

-----------------------------------------------------------------------------------

ist es verdammt schnell

schalte ich aber nur den smarty frei wirds langsam:

-----------------------------------------------------------------

include( 'includes/application_top.php');

// create smarty elements

$smarty = new Smarty;

// include boxes

require(DIR_FS_CATALOG .'templates/'.CURRENT_TEMPLATE. '/source/boxes.php');

// the following cPath references come from application_top.php

$category_depth = 'top';

if (isset($cPath) && xtc_not_null($cPath)) {

$categories_products_query = xtc_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . $current_category_id . "'");

$cateqories_products = xtc_db_fetch_array($categories_products_query);

if ($cateqories_products['total'] > 0) {

$category_depth = 'products'; // display products

} else {

$category_parent_query = xtc_db_query("select count(*) as total from " . TABLE_CATEGORIES . " where parent_id = '" . $current_category_id . "'");

$category_parent = xtc_db_fetch_array($category_parent_query);

if ($category_parent['total'] > 0) {

$category_depth = 'nested'; // navigate through the categories

} else {

$category_depth = 'products'; // category has no products, but display the 'no products' message

}

}

}

/*

require(DIR_WS_INCLUDES . 'header.php');

include (DIR_WS_MODULES . 'default.php');

$smarty->assign('language', $_SESSION['language']);

$smarty->caching = 0;

$smarty->display(CURRENT_TEMPLATE . '/index.html');

$c_string='Powered by XT-Commerce';

*/

echo 'test - keine angst alles noch da, ist nur auskommentiert';

echo $modified;

----------------------------------------------------------------

liegt also am smarty, da er die boxen l?dt.

gru?

Andy

Link to comment
Share on other sites

Ganz dumme Frage am Rande, welche Version von XTC verwendest Du. Ich hatte ?hnliches Problem bei vielen Artikeln in der 2.0 RC1.2.

Nachdem ich Version v2.0 RC1.2 (24.09.04) Update verwende, ist das Problem beseitigt.

Die Version v2.0 RC1.2 (24.09.04) Update finde ich ?brigens Spitze. Mein Kompliment an die Entwickler.

Link to comment
Share on other sites

Versuch mal die Preisdarstellung aus den Bestsellern wieder rauszunehmen. Dabei muss er zweimal durch ne riesige Tabelle ackern.

<?php

/* -----------------------------------------------------------------------------------------

$Id: best_sellers.php,v 1.4 2004/03/25 08:31:41 fanta2k Exp $ 


XT-Commerce - community made shopping

http://www.xt-commerce.com


Copyright ? 2003 XT-Commerce

-----------------------------------------------------------------------------------------

based on: 

? 2000-2001 The Exchange Project (earlier name of osCommerce)

? 2002-2003 osCommerce(best_sellers.php,v 1.20 2003/02/10); [url]www.oscommerce.com[/url] 

? 2003 nextcommerce (best_sellers.php,v 1.10 2003/08/17); [url]www.nextcommerce.org[/url]


Released under the GNU General Public License 

-----------------------------------------------------------------------------------------

Third Party contributions:

Enable_Disable_Categories 1.3 Autor: Mikel Williams | [email][email protected][/email]


Released under the GNU General Public License 

---------------------------------------------------------------------------------------*/

// reset var

$box_smarty = new smarty;

$box_content='';

$box_smarty->assign('tpl_path','templates/'.CURRENT_TEMPLATE.'/'); 


// include needed functions

require_once(DIR_FS_INC . 'xtc_row_number_format.inc.php');


//fsk18 lock

$fsk_lock='';

if ($_SESSION['customers_status']['customers_fsk18_display']=='0') {

$fsk_lock=' and p.products_fsk18!=1';

}

if (GROUP_CHECK=='true') {

$group_check="and p.group_ids LIKE '%c_".$_SESSION['customers_status']['customers_status_id']."_group%'";

}

if (isset($current_category_id) && ($current_category_id > 0)) {

$best_sellers_query = xtc_db_query("select distinct

p.products_id,

p.products_image,

pd.products_name from " .

TABLE_PRODUCTS . " p, " .

TABLE_PRODUCTS_DESCRIPTION . " pd, " .

TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " .

TABLE_CATEGORIES . " c

where p.products_status = '1'

and c.categories_status = '1'

and p.products_ordered > 0

and p.products_id = pd.products_id

and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'

and p.products_id = p2c.products_id ".$fsk_lock."

".$group_check."

and p2c.categories_id = c.categories_id and '" . $current_category_id . "'

in (c.categories_id, c.parent_id)

order by p.products_ordered desc, pd.products_name limit " . MAX_DISPLAY_BESTSELLERS);

} else {

$best_sellers_query = xtc_db_query("select distinct

p.products_id,

p.products_image,

pd.products_name from " .

TABLE_PRODUCTS . " p, " .

TABLE_PRODUCTS_DESCRIPTION . " pd, " .

TABLE_CATEGORIES . " c

where p.products_status = '1'

and c.categories_status = '1'

".$group_check."

and p.products_ordered > 0

and p.products_id = pd.products_id ".$fsk_lock."

and pd.language_id = '" . (int)$_SESSION['languages_id'] . "'

order by p.products_ordered desc,

pd.products_name limit " . MAX_DISPLAY_BESTSELLERS);

}

if (xtc_db_num_rows($best_sellers_query) >= MIN_DISPLAY_BESTSELLERS) {



$rows = 0;

$box_content=array();

while ($best_sellers = xtc_db_fetch_array($best_sellers_query)) {

$rows++;

$image='';

if ($best_sellers['products_image']) $image=DIR_WS_INFO_IMAGES . $best_sellers['products_image'];

$box_content[]=array(

'ID'=> xtc_row_number_format($rows),

'NAME'=> $best_sellers['products_name'],

'IMAGE' => $image,

//'PRICE'=>xtc_get_products_price($best_sellers['products_id'],$price_special=1,$quantity=1),

'LINK'=> xtc_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $best_sellers['products_id']));


}




$box_smarty->assign('box_content', $box_content);

$box_smarty->assign('language', $_SESSION['language']);

// set cache ID

if (USE_CACHE=='false') {

$box_smarty->caching = 0;

$box_best_sellers= $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_best_sellers.html');

} else {

$box_smarty->caching = 1; 

$box_smarty->cache_lifetime=CACHE_LIFETIME;

$box_smarty->cache_modified_check=CACHE_CHECK;

$cache_id = $_SESSION['language'];

$box_best_sellers= $box_smarty->fetch(CURRENT_TEMPLATE.'/boxes/box_best_sellers.html',$cache_id);

}


$smarty->assign('box_BESTSELLERS',$box_best_sellers);



}

?>

nur das deaktivieren der Box im Template verhindert ja nicht, dass der Code trotzdem ausgef?hrt wird.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...