Il caricamento della pagina Magento richiede troppo tempo


10

Ho un sito Web Magento. Non ci sono utenti (massimo 2-3 alla volta).

Il nostro server è: CPU: 2000 MHz RAM: 2048 Mb HDD: 50000 Mb.

Ho installato ZendServerCE (apc + memcached + Zend Optimizer + Zend Data Cache). Ho disattivato l'appunto, perché il sito Web è stato caricato molto peggio. Ho impostato la struttura del tipo piatto, i dati reindicizzati e memorizzati nella cache nella console di amministrazione.

Quindi ho apc + Zend Optimizer + Zend Data Cache .

  1. Il primo problema è che ho verificato il runtime come funziona la spedizione. La chiamata start_session () richiede circa 500-700ms. Sembra non essere un buon risultato. Perché così tanto tempo, non lo so.

  2. Ho letto questo: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_buffer_size e ho trovato le opzioni ottimali per il mio server.

All'ora:

Key_read_requests = 8887
Key_reads         = 252
Key_write_request = 187
Key_writes        = 146 

Vedete che 252/8887> 0,01, ma non troppo. È il valore ottimale che abbia mai ottenuto. Altri risultati sono iniziati da> 6.

Ecco my.cnf:

key_buffer              = 48M
myisam_sort_buffer      = 2M
sort_buffer             = 2M
read_buffer_size        = 2M
join_buffer             = 2M
read_rnd_buffer         = 2M
max_allowed_packet      = 128M
thread_stack            = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover         = BACKUP
max_connections        = 50
table_cache            = 256
#thread_concurrency     = 10
query_cache_limit       = 8M
query_cache_size        = 98M

3. Memcached per qualche motivo non era buono. L'ho spento. Ma zend data cache e zend optimizer funzionano ancora.

4 APC sembra corretto. Per caricare l'azione del controller sono necessari 3-4 secondi per la prima volta (ho impostato die () per controllarlo) e per la prima volta sono necessari 1 - 1,3 secondi.

5 Dopo alcuni minuti ho riavviato mysql e ho ottenuto buoni risultati. Le pagine venivano caricate da 1,5 a 2,5 secondi. Ma ora (dopo diverse ore) ci vogliono 6-10 secondi. Non riesco a trovare il motivo.

Quindi vedi qualche configurazione errata qui? Potrebbe essere il mio server non adatto a Magento?

AGGIORNAMENTO 1: circa 600 categorie e 1000 prodotti oggi e circa 20000 categorie (per diversi webstore) e 1500-3000 prodotti in futuro.

Non ci sono molti attributi.

AGGIORNAMENTO 2 Ho notato che la console ssh funziona troppo lentamente. Ho riavviato il server e ora funziona velocemente. significa che ho un problema con la RAM. Non c'è abbastanza spazio.

È lo stato iniziale senza apache:

             total       used       free     shared    buffers     cached
Mem:          2048        600       1447

AGGIORNAMENTO 3 Ho capito. Ora viene caricato per 0,5-1,5 sec

Ecco la configurazione: mysql

[mysqld]
key_buffer_size         = 256M
tmp_table_size      = 32M
max_heap_table_size     = 32M
myisam_sort_buffer      = 4M
sort_buffer             = 4M
read_buffer_size        = 4M
join_buffer     = 4M
read_rnd_buffer     = 4M
max_allowed_packet  = 64M
thread_stack        = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover          = BACKUP
max_connections         = 20
table_cache             = 1024
innodb_buffer_pool_size = 128M
query_cache_limit   = 24M
query_cache_size        = 256M

php

[apc]
apc.stat=1
apc.enabled=1
apc.optimization=0
apc.cache_by_default=1
apc.shm_segments=10
apc.shm_size=256M
apc.ttl=0
apc.user_ttl=0
apc.num_files_hint=10000
;apc.mmap_file_mask="/tmp/apc"
apc.max_file_size=5M
apc.enable_cli=1
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.slam_defense=0
apc.user_entries_hint=10000

Tutto funziona perfettamente, ma rimane una domanda. APC mi mostra questa statistica: inserisci qui la descrizione dell'immagine

Perché colpisce così piccolo? Qualche idea?


Sarebbe bello se lasci cadere un paio di righe sull'installazione di Magneto (ad es. Dimensioni del catalogo, modifiche, estensioni ecc.).
user487772

Non è possibile che qualcuno possa semplicemente pubblicare una serie di file di configurazione affinché tu possa configurare correttamente il tuo server. Ci sono dozzine di file; revisioni specifiche delle modifiche a livello di sistema e software che è necessario apportare per sfruttare al meglio l'hardware disponibile.
Ben Lessani - Sonassi,

Per favore, descrivi perché hai impostato il downvote
Anthony

@Tim ho aggiornato la domanda
Anthony

2
Vorrei xhprofentrare e provare a ottenere una visualizzazione di ciò che impiega più tempo a caricare. Si tratta di un server di produzione sotto carico o semplicemente per il test?
Filwinkle

Risposte:


6

Poiché la domanda sembra non essere molto incentrata sul magento, ecco la mia risposta non molto incentrata sul magento.

La memorizzazione nella cache OpCode e le ottimizzazioni dei DB sono un buon modo per accelerare le applicazioni Web in una certa misura. Ma il vantaggio sarà relativamente moderato. Per ottenere un vero aumento di velocità dovresti prendere in considerazione l'uso della cache di vernice. È open source, facile da configurare e facile da integrare con Magento grazie ai moduli liberamente disponibili per Magento.

C'è anche un buon articolo con una breve panoramica di come funziona: http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html

Considera soprattutto il grafico:

pagine / secondo


4
La vernice è ottima se hai già un negozio veloce e vuoi compensare le risorse. Ma non dovrebbe mai essere usato per nascondere il fatto che un negozio è lento. Le pagine devono ancora essere generate in primo luogo, quindi saranno sempre tempi di caricamento delle pagine 6-10s, indipendentemente.
Ben Lessani - Sonassi,

Sembra che sarebbe come memcached che ho usato prima. Penso che sbaglio male nelle proprietà mysql o il server sia troppo debole
Anthony

2

Se la tua azienda fa affidamento sul buon rendimento del tuo hosting, perché stai cercando di amministrare il server senza esperienza.

Ne trarrai sicuramente beneficio solo contattando un host Magento specializzato e lasciando che si occupino dell'amministrazione del sistema, mentre fai ciò che sei bravo a gestire il tuo negozio.

Guardando le tue specifiche, non hai abbastanza RAM per provare a eseguire un negozio Magento. C'è un sacco di domande simili come le tue,

https://serverfault.com/a/400748/113375 .
/server/430565/magento-hosting-on-a-budget


Perché il nostro cliente ha un budget limitato. Dovrei pagare per magento host più di 50 euro al mese. Abbiamo un limite per l'ospite di 150-200 euro all'anno-) Comunque grazie per i collegamenti
Anthony

1
Quindi il cliente può aspettarsi di guadagnare $ 20-40.000 / anno con l'ottimizzazione del 100% (l'hosting è dello 0,5-1% delle entrate). Molte persone qui possono darti tutti i dettagli e le impostazioni tecniche, ma stai cercando di fare troppo con troppo poco. Potresti farlo funzionare dal punto di vista tecnico, ma dal lato degli affari andrà a vuoto. A meno che il carico delle tue pagine dinamiche (senza fpc) sia inferiore a 3 secondi, perdi il 56% dei visitatori, indirizzando idealmente 1-2 secondi - le conversioni di Google e dei visitatori puniranno il sito altrimenti - chiamata difficile. Data la situazione, una probabilità del 95-99%> 3 pagine viene caricata e / o il sito va sotto.

1

Questo hardware fisico o un server privato virtuale? Probabilmente dovresti spostare il tuo database sul suo server dedicato. Questo ti dà anche il vantaggio di essere in grado di isolare se i tuoi problemi di velocità risiedono con Apache / PHP o con MySQL.

start_session () essendo lento significa che probabilmente stai soffrendo di hardware sottodimensionato. Non so se le tue scelte tecnologiche significano che le sessioni sono memorizzate su disco o nella RAM, ma 500-700ms quasi sicuramente indicano che sono archiviate su disco e stai riscontrando problemi di prestazioni I / O - probabilmente perché il tuo database è scambio su disco perché non si adatta alla RAM ... ma è tutta speculazione.

In bocca al lupo!


Grazie per la tua risposta! Io uso VPS. Non è molto adatto per Magento ma ho il compito di ottimizzarlo in questo ambito. È possibile verificare se lo scambio di database è su disco?
Anthony,

1
free -mti dirà se stai usando swap, e le ultime versioni del topcomando ti diranno se premi O e P per ordinare in base all'utilizzo dello swap. Altrimenti devi tornare a usare l'id di processo di mysqld con qualcosa del genere: awk '/^Swap:/ { SWAP+=$2 } END { print SWAP" kB" }' /proc/$(pidof mysqld)/smaps tutto descritto qui: dbasquare.com/2012/04/10/…
Ralph Tice,

1

Ovviamente non c'è modo di mostrarti una "configurazione funzionante" che aumenti le tue prestazioni, ma Magento in realtà tenta di fare qualcosa del genere e pubblica un esempio di uno stack LAMP altamente configurato nei loro white paper sulle prestazioni. La metodologia di questi white paper si applica a CE ed EE. Consiglio vivamente di leggere completamente entrambi i white paper poiché le idee suggeriscono che echeggiano molto di questo thread e hanno fornito raccomandazioni Magento molto specifiche, direttamente dalla fonte: http://www.magentocommerce.com/whitepaper/


1

Configurazione

ZendFramework (zend optimizer e zend data cache) + APC + Memcache + Nginx

funziona perfettamente per me.

più di 30 utenti simultanei possono caricare la pagina in meno di un secondo (~ 0.4s-0.6s)

Ho impostato nginx a 80 porte (come proxy) e apache a 8080.

Grazie a @MattSchweers per i collegamenti. Me ne sono dimenticato. Mi aiuta a configurare MySQL


nessun problema! In realtà ho usato quei white paper per alcune modifiche di MySQL questa settimana - ha funzionato bene.

1

secondo la mia esperienza, il server litespeed migliora le prestazioni di ben 2 volte la licenza $ 1 al mese di $ 32. Mi è stato detto che hai solo bisogno della licenza 1cpu poiché php funziona separatamente in litespeed.


Il web server non è il collo di bottiglia. PHP è che passare a Litespeed non cambierà nulla.
Ben Lessani - Sonassi,

Sebbene in generale concordi sul fatto che Litespeed sia un'ottima scelta per Magento, questa risposta probabilmente non risolverà il problema posto dal PO ed è al di fuori del suo budget dichiarato.
Preston

0

Quando hai più webstore e più categorie, Magento sta essenzialmente creando una specie di prodotto caretsian di voci per tutto il webstore, le categorie e i prodotti, che caricherà significativamente il Database. I tuoi mancati APC sono piuttosto alti e dovrai esaminarli. Tuttavia, anche se risolvi APC, penso che il tuo problema di prestazioni potrebbe persistere soprattutto se il tuo traffico aumenta. Per velocizzare il tuo sito dovrai installare una cache operativa, sia Varnish che Full page (se Enterprise Edition).

Magento esegue molte scritture in lettura sul DB, quindi puoi anche provare ad avere il tuo MySQl in modalità di replica Master Slave con tutte le letture magento dallo slave, mentre le scritture avvengono sul master.


0

Vorrei provare a cambiare le seguenti opzioni APC e vedere se i risultati aumentano.

apc.shm_segments 1

apc.ttl 7200

apc.user_ttl 7200

Su un sito live puoi anche usare quanto segue.

apc.stat 0

Questo interromperà il controllo APC se il file è cambiato dall'ultima compilazione, offrendoti un piacevole aumento di velocità. Basta non dimenticare di svuotare la cache APC quando si modificano i file PHP.


0

Coppia altri pensieri. Potresti voler aumentare la tua innodb_buffer_pool_size, 128M può essere un po 'basso e anche i piccoli siti possono crescere così rapidamente. La variabile determina la quantità di dati conservati in memoria.

Magento lo usa per tutte le sue tabelle, comprese le tabelle di registro che crescono rapidamente. Dovrai assicurarti di limitare la quantità di questi dati che stai conservando. Eseguire "php shell / log.php --status" dalla riga di comando ti darà un'idea di dove ti trovi e se ti sfugge di mano. Ci sono anche opzioni per pulire le tabelle di registro con esso.

2 GB di RAM non funzionano molto, quindi è necessario fare attenzione a dove allocare la memoria.

Anche una cache di pagina completa + Cache Warmer può aiutare a mantenere il catalogo del tuo sito e le pagine cms innescate e veloci. Puoi vedere il nostro qui: http://ecommerce.brimllc.com/full-page-cache-magento.html

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.