Domanda

Magento di solito è così terribilmente lento?

Questa è la mia prima esperienza con esso e il pannello di amministrazione richiede semplicemente anni per caricare e salvare le modifiche. È un'installazione predefinita con i dati di test.

Il server in cui è ospitato serve altri siti non Magento in modo super veloce. Cos'è il codice PHP utilizzato da Magento che lo rende così lento e cosa si può fare per risolverlo?

È stato utile?

Soluzione

Sono stato coinvolto solo tangenzialmente nell'ottimizzazione di Magento per le prestazioni, ma ecco alcuni motivi per cui il sistema è così lento

  1. Parti di Magento utilizzano un sistema di database EAV implementato su MySQL. Ciò significa eseguire una query per una singola "cosa" spesso significa interrogare più righe

  2. Ci sono molte cose dietro le quinte (configurazione dell'applicazione, configurazione del sistema, configurazione del layout, ecc.) che implicano la costruzione di giganteschi alberi XML in memoria e quindi "query" " quegli stessi alberi per informazione. Ciò richiede sia memoria (memorizzazione degli alberi) sia CPU (analisi degli alberi). Alcuni di questi (specialmente l'albero del layout) sono enormi. Inoltre, a meno che non sia attiva la memorizzazione nella cache, questi alberi vengono creati dai file sul disco e su ogni richiesta .

  3. Magento utilizza il suo sistema di configurazione per consentire di sovrascrivere le classi. Questa è una funzionalità potente, ma significa che ogni volta che viene istanziato un modello, un helper o un controller, è necessario eseguire ulteriori istruzioni PHP per determinare se è necessario un file di classe originale o un file di classe di sostituzione. Questo aggiunge.

  4. Oltre al sistema di layout, il sistema di template di Magento prevede molti rendering ricorsivi. Questo aggiunge.

In generale, gli ingegneri Magento avevano il compito, innanzitutto, di costruire il sistema più flessibile e personalizzabile possibile, e di preoccuparsi delle prestazioni in seguito.

La prima cosa che puoi fare per garantire prestazioni migliori è attivare la memorizzazione nella cache (Sistema - > Gestione cache). Questo alleggerirà alcuni dei blocchi CPU / disco che si verificano mentre Magento sta costruendo i suoi vari alberi XML.

La seconda cosa che vorrai fare è assicurarsi che il tuo host e il team operativo abbiano esperienza nell'ottimizzazione delle prestazioni di Magento. Se ti affidi al piano da $ 7 al mese per farti vedere, beh, buona fortuna con quello.

Altri suggerimenti

Oltre ai consigli di Alan Storm sulla memorizzazione nella cache, ci sono due cose che ti consiglio in particolare di esaminare in relazione alla memorizzazione nella cache:

: assicurati che la memorizzazione nella cache sia memorizzata nella cache, anziché sul disco.

Mi occupo di un paio di installazioni di Magento e, una volta caricato qualsiasi tipo di sistema, memcached inizia a funzionare molto più velocemente. Ed è facile cambiarlo (relativamente al fare almeno altre cose magento!)

Un buon punto di partenza è qui: http://www.magentocommerce.com/boards / viewthread / 12998 / P30 / - ma se non hai mai usato memcached prima, vale la pena guardare anche alcune informazioni generali su di esso.

: abilita la cache dei modelli / vista.

Questo è un buon articolo: http://inchoo.net/ecommerce/magento / Magento-block-caching /

Ci sono anche buoni sul sito di magento (blocco del blocco magento di Google), ma al momento è inattivo.

Per aggiungere i miei due centesimi alla memorizzazione nella cache dei blocchi, ti consiglio di creare i tuoi blocchi in / app / code / local, estendere quelli principali e definire i parametri della cache, nominarli xxx_Cache e quindi aggiornare il layout da usare questi blocchi anziché quelli principali. In questo modo, eviti di perdere le modifiche o di rompere il sistema quando aggiorni magento.

Se non l'hai ancora visto, Magento e Rackspace si sono uniti per creare un white paper sull'ottimizzazione delle prestazioni di Magento. È eccellente https : //support.rackspace.com/whitepapers/building-secure-scalable-and-highly-available-magento-stores-powered-by-rackspace-solutions/

--- modifica ---

Un'altra grande risorsa, recentemente disponibile (ottobre 2011) è: http://www.sessiondigital.com/assets/Uploads/ Mag-Perf-WP-final.pdf

(Grazie a Alan Storm per questo.)

Probabilmente esiste anche una ragione non ovvia per cui l'interfaccia di amministrazione è molto lenta. Magento ha un modulo chiamato Mage_AdminNotification. Prova a disabilitare quell'estensione. Perché ciò che fa è interrogare magentocommerce.com per nuovi messaggi di aggiornamento. Se i loro server sono lenti, la pagina di amministrazione attende ed è in effetti lenta a causa del ritardo della rete e del caricamento delle notizie esterne. Se hai protetto la tua connessione al server in uscita attraverso un firewall, questo può essere ancora più frustrante, poiché l'interfaccia di amministrazione attenderà il timeout quando non può raggiungere magentocommerce.com

Per disabilitarlo: vai su Sistema - > Configurazione, scorrere verso il basso e premere Avanzate (nella sezione Avanzate). Ora disabilita Mage_AdminNotification e salva!

Ho solo un'esperienza superficiale con Magento. L'ho installato su un grid-server condiviso e il caricamento della pagina era triste ~ 5 + secondi. Su un lark, l'ho installato sul mio server dedicato ottimizzato per siti CMS e mi sono sentito molto, molto scattante.

Il mio hosting dedicato aveva ~ 10 Joomla! siti e un sito VBullitin in esecuzione.

Suppongo che non sarà performante sull'hosting condiviso. L'abbonamento in eccesso non consentirà a Magento di disporre di risorse sufficienti per l'esecuzione come dovrebbe.

Sono più coinvolto nell'ottimizzazione del server gestito nella mia azienda, ma potrei avere alcuni suggerimenti per te. Innanzitutto, puoi guardare il codice più da vicino usando la funzione di tracciamento del codice del server Zend. Ti permetterà di vedere dove e quando le cose si sporcano.

Condivido totalmente la considerazione di Benlumley riguardo alla cache. La maggior parte dei siti che ospitiamo non ha nemmeno abilitato il blocco nella cache. Questa cache deve essere esplicitamente chiamata e non "ipotizzata". Quindi, se il tuo codice non ha ancora preso parte a questo meccanismo, è sicuramente qualcosa che vuoi provare. Se hai una versione EE, puoi ottenere la pagina Completa per ottenere il meglio dalla bestia.

Anche un proxy inverso aiuterà molto. Memorizzerà le risorse statiche nella cache, riducendo significativamente la pressione sullo stack di interpretazione php dei server frontali.

Non dimenticare di scrivere le sessioni & amp; Cache Magento su un disco RAM. Questo ti porterà sicuramente ad un altro livello di esibizioni.

C'è ancora molto da dire qui ma sto esaurendo il tempo. Devi sapere che un buon sito, ben codificato in una versione 1.4.1 CE, in esecuzione su un server RAM 2x5650 Xeon + 16 GB e con un proxy R in cima può portare fino a 50.000 visitatori unici al giorno con pagine lisce per tutti .

Il passaggio da Apache a LiteSpeed ??ci ha aiutato molto. Oltre a: Modifica delle impostazioni di MySQL, installazione di Fooman Speedster (modulo per comprimere / combinare file js e css) e installazione di APC. Magento ha anche pubblicato un white paper su come ottenere le migliori prestazioni dall'edizione enterprise, ma è ugualmente applicabile alle altre versioni: http://www.magentocommerce.com/whitepaper/

Ci sono molte ragioni per cui il tuo carrello Magento potrebbe essere lento, ma non ci sono scuse perché ci sono una varietà di modi per sollevare il problema e renderlo dannatamente veloce. Abilitare Gzip modificando il file htaccess è un inizio. Puoi anche installare l'estensione fooman speedster. Il tipo di server utilizzato determinerà anche la velocità del tuo negozio. Altri suggerimenti e una spiegazione migliore qui http://www.interactone.com/ how-to-velocità-up-magento /

Magento è molto lento perché la progettazione del database non è molto buona. Il codice è un casino e molto difficile da aggiornare e ottimizzare. Pertanto, tutte le ottimizzazioni vengono eseguite tramite cache anziché tramite codice.

D'altra parte. È un negozio online con molti strumenti. Quindi, se hai bisogno di un webshop flessibile, acquista un server molto potente e starai bene.

Quando ho installato per la prima volta avevo pagine che impiegavano 30 secondi per caricarsi. Il mio server non era al massimo in ram o processore, quindi non sapevo cosa fare. Guardando il pannello di rete di Firebug stava caricando circa 100 file per pagina e ognuno ha impiegato molto tempo per connettersi. Dopo aver installato fooman speedster e gzip nei carichi htaccess i tempi sono scesi a 3 secondi, come se fossero stati su altri carrelli della spesa sul mio server.

dipenderà anche dalla funzionalità rispetto alle prestazioni.

Le prestazioni non elaborate si ottengono utilizzando nginx, php-fpm, memcached, apc e un server progettato correttamente.

Funzionalità come le prestazioni plesk e magento potrebbero essere gestite prendendo l'intera prospettiva in prospettiva durante la progettazione di un cloud di prestazioni magento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top