Accelerare il carrello per effettuare il checkout e eseguire il checkout delle azioni di salvataggio


18

Sto gestendo diversi negozi Magento CE e li accelero con la memorizzazione nella cache, tuttavia il carrello e il checkout rimangono ancora lenti. Qualcuno ha esperienza o suggerimenti per accelerare queste pagine?

Forse attraverso l'ottimizzazione del database?

Alcune query eseguite durante il salvataggio di un ordine dal checkout vengono visualizzate nel log delle query lente sul server e il database sembra essere il collo di bottiglia.


cosa significa lento? 1s? 5s? ... fornisce anche alcuni dettagli sulla dimensione dei negozi (numero di prodotti semplici, numero di tabelle configurabili, dimensioni delle tabelle sales_flat_quote * e così via).
FlorinelChis

Lento è tra 5 e 10 secondi a seconda di quanto è occupato il negozio. Ci sono 50.000 prodotti semplici, nessun altro tipo. L'ID sales_flat_quote deve cercare domani (nessun accesso al momento)
Sander Mangel

1
quante regole di prezzo del carrello hai? rallentano il carrello. Speriamo anche di risolvere questo problema nel rilascio del Service Pack, previsto Q1 / Q2 '13
Piotr Kaminski il

@macki nessuna regola sui prezzi al momento, grazie per la menzione comunque. è bello sapere
Sander Mangel

Risposte:


27
  1. Per esperienza personale, disabilita il modulo Mage_Rss che impone una 'pulizia della cache' 4 volte nel processo di checkout - molto costoso se stai usando la cache del filesystem, probabilmente ancora costoso se stai usando database o memcached.

  2. CE Disabilita Mage_Downloadable per motivi simili purché non si stia utilizzando un prodotto scaricabile, questo accelera il checkout e le azioni del carrello quando si hanno più articoli nel carrello perché ci sono osservatori su cose come checkout_type_onepage_save_order_afterche moltiplicano il tempo di risposta per il numero di articoli nel carrello.

  3. Collega xhprof / xhgui e crea un profilo.


Grazie XHProf e XHGui sembra un bel progetto per un weekend in cui tuffarsi
Sander Mangel

1
Dovresti davvero provare a disattivare mage_rss o commentare i suoi osservatori. velocizza immediatamente il salvataggio dell'ordine
STANISLAS PIERRE-ALEXANDRE il

1
Mi piacerebbe ricevere un feedback di prima mano se il trucco di disabilitazione di Mage_Rss funziona per l'OP
philwinkle

2
Vorrei sottolineare che EE richiede Mage_Downloadable come dipendenza:Module "Enterprise_PricePermissions" requires module "Mage_Downloadable
philwinkle,

1
Non ho mai riportato indietro e per questo mi dispiace. La disabilitazione di Mage_Rss lo ha notevolmente accelerato, la disabilitazione di Mage_Downloadable non ha comportato notevoli miglioramenti delle prestazioni, ma devo dire che non ho fatto un benchmark "corretto", solo diverse esecuzioni nel mio browser.
Sander Mangel

4
  • Imposta gli indici su manuale.
  • Disabilita l'archiviazione dei tag cache

Entrambe queste modifiche avranno un impatto MASSIVO sulle prestazioni poiché impediscono a Magento di svuotare le cache e di reindicizzare ogni volta che un ordine viene eseguito.

Tuttavia, il costo potrebbe essere stantio di conseguenza - livelli di scorte ecc.


grazie, i livelli di stock difettosi sono un problema per la maggior parte dei negozi. Ma tienilo a mente per negozi senza gestione delle scorte!
Sander Mangel

2

Se vuoi risolverlo in modo sperimentale, c'è un'estensione dal primo hackathon magento a monaco di baviera, tedesco:

https://github.com/magento-hackathon/MongoDB-OrderTransactions

Mettono in coda gli ordini in un mongo db, l'idea era, se il mysql-server è libero di riscriverli. Ma non so fino a che punto sia pronto questo progetto. Afaik lavora tutta la scrittura, ma non quella posteriore.


Grazie, stavo davvero guardando le soluzioni noSQL e questo potrebbe essere un buon punto di partenza!
Sander Mangel

2

Non conosco la tua versione di Magento CE con cui stai lottando. Ma ho avuto seri problemi di prestazioni con il mio CE 1.6.
Motivo: indici errati e mancanti. Sono stati corretti in CE 1.6.2.
Potresti verificare se ti aiuta.
Ho ridotto il tempo di checkout per 38 righe con 73 articoli in totale da 123 sec a 4 sec !!!!

Ecco che arriva:

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/* Foreign Keys must be dropped in the target to ensure that requires changes can be done*/

ALTER TABLE `core_url_rewrite` 
DROP FOREIGN KEY `FK_CORE_URL_REWRITE_CTGR_ID_CAT_CTGR_ENTT_ENTT_ID`  , 
DROP FOREIGN KEY `FK_CORE_URL_REWRITE_STORE_ID_CORE_STORE_STORE_ID`  ;


/* Alter table in target */
ALTER TABLE `catalog_category_entity_varchar` 
DROP KEY `MAGMI_CCEV_OPTIMIZATION_IDX` ;


/* Alter table in target */
ALTER TABLE `catalog_product_bundle_stock_index` 
DROP KEY `PRIMARY`, ADD PRIMARY KEY(`entity_id`,`website_id`,`stock_id`,`option_id`) ;


/* Alter table in target */
ALTER TABLE `catalog_product_entity_media_gallery` 
DROP KEY `MAGMI_CPEM_OPTIMIZATION_IDX` ;


/* Alter table in target */
ALTER TABLE `core_url_rewrite` 
CHANGE `id_path` `id_path` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Id Path' after `store_id` , 
CHANGE `request_path` `request_path` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Request Path' after `id_path` , 
CHANGE `target_path` `target_path` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Target Path' after `request_path` , 
CHANGE `is_system` `is_system` smallint(5) unsigned   NULL DEFAULT 1 COMMENT 'Defines is Rewrite System' after `target_path` , 
CHANGE `options` `options` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Options' after `is_system` , 
CHANGE `description` `description` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Deascription' after `options` , 
CHANGE `category_id` `category_id` int(10) unsigned   NULL COMMENT 'Category Id' after `description` , 
CHANGE `product_id` `product_id` int(10) unsigned   NULL COMMENT 'Product Id' after `category_id` , 
ADD KEY `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_CATEGORY_ENTITY_ENTITY_ID`(`product_id`) , 
DROP KEY `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID` , 
ADD CONSTRAINT `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_CATEGORY_ENTITY_ENTITY_ID` 
FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE , 
DROP FOREIGN KEY `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID`  ;


/* Alter table in target */
ALTER TABLE `eav_attribute` 
DROP KEY `MAGMI_EA_CODE_OPTIMIZATION_IDX` ;


/* Alter table in target */
ALTER TABLE `eav_attribute_option_value` 
DROP KEY `MAGMI_EAOV_OPTIMIZATION_IDX` ;


/* The foreign keys that were dropped are now re-created*/

ALTER TABLE `core_url_rewrite` 
ADD CONSTRAINT `FK_CORE_URL_REWRITE_CTGR_ID_CAT_CTGR_ENTT_ENTT_ID` 
FOREIGN KEY (`category_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE , 
ADD CONSTRAINT `FK_CORE_URL_REWRITE_STORE_ID_CORE_STORE_STORE_ID` 
FOREIGN KEY (`store_id`) REFERENCES `core_store` (`store_id`) ON DELETE CASCADE ON UPDATE CASCADE ;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

1

Il modo migliore per accelerare le operazioni di database di grandi dimensioni è di avere il database sul proprio server ottimizzato per l'uso del database. Non c'è molto che possa essere migliorato nell'area di pagamento in termini di codice (anche se alcuni tipi di prodotti, come Configurabile, possono davvero impantanare il processo di quotazione) poiché pochissimo può essere memorizzato nella cache in modo sicuro.


Grazie, avevo paura per quello. È già un'installazione dedicata con un server DB separato. Spero che ottimizzeranno il checkout in Mage 2 :)
Sander Mangel

1
2.0 Include molte riscritture finora, quindi possiamo sperare. Onestamente, i modelli di prodotto stessi sono molto ciò che rallenta il checkout: deve scorrere le istanze del tipo per ciascun prodotto durante la creazione del preventivo / conversione in ordine e questo può essere un processo costoso.
Andrew Quackenbos,

1

Forse guarda a dividere le letture e le scritture nel tuo DB. Avrai bisogno di una configurazione di replica quasi immediata, anche se è quello che mi preoccupa sempre farlo, anche se altri potrebbero avere maggiori informazioni su come configurarlo al meglio.


Non sono sicuro che sia una soluzione affidabile per essere onesti, sembra un cambiamento abbastanza grande di dati incompleti. L'idea è davvero carina!
Sander Mangel

Sono d'accordo in una certa misura e ammetto di non averlo mai fatto da solo, anche se vedo varie persone che scrivono post sul blog, ecc., Suggerendo di aver visto un netto miglioramento delle prestazioni. Se riesco a trovare alcuni benchmark ecc. Li pubblicherò.
Richard Cleverley,

Grazie Richard, parlerò anche con la mia società di hosting. Hanno molta più esperienza con questo tipo di cose che penso. Se ho un ulteriori informazioni vi posterò esso
Sander Mangel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.