Mi mordo.
Quella prima risposta dal web server deve arrivare a meno di 200 ms nel Regno Unito
Al momento non c'è frontend al sito, è privo di stile e di immagini.
Non otterrai queste cifre senza l'aiuto di Vernice o FPC (o entrambi). Spero certamente che questa cifra non debba anche includere contenuto statico (ogni volta che decidi di aggiungerlo) - poiché è quasi impossibile da raggiungere (a corto di avere poco o niente immagini / js / css).
Stiamo arrivando a 800ms
Viene anche eseguito su Nginx con Varnish
Varnish è configurato in modo errato.
Un'installazione correttamente configurata di Varnish fornirà tempi di caricamento della pagina <100 ms (vediamo più vicino a <10 ms).
In effetti, per Magento, dovresti aspettarti di vedere qualcosa del genere,
Quando un cliente non ha effettuato l'accesso ...
Cioè. Non aver creato una sessione unica (aggiungi al carrello / lista dei desideri, accesso ecc.)
--1.2s--------0.8s-----------------0.6s----------------0.1s--------------0.08s----
Uncached Mage default cache Partial FPC cache Total FPC cache Varnish
Quando un cliente ha effettuato l'accesso ...
Vale a dire. Dopo aver creato una sessione unica (accesso, articoli nel carrello ecc.). A questo punto la vernice sarà probabilmente fuori. E se hai scelto di usare ESI - a seconda delle chiamate inverse, può mantenere un tempo di caricamento della pagina simile a quello della cache FPC (a causa delle spese generali di bootstrap) - o effettivamente aumentare i tempi di caricamento della pagina oltre a essere staccato.
--1.4s--------0.8s-----------------0.6s--------------
Uncached Mage default cache Total FPC cache
Non è un caso di messa a punto di Varnish - è un caso di - "in realtà non stai memorizzando nulla nella cache" .
I file di configurazione del server Magento ideale
Non ce n'è uno, beh, non del tutto.
Gestiamo oltre 400 server, tutti negozi puramente Magento - di dimensioni e capacità variabili. Ed è raro che i file di configurazione che abbiamo su uno corrispondano a quelli di un altro. Questo perché non tutte le aziende sono uguali.
I colli di bottiglia possono formarsi per diversi motivi:
- Elevato numero di visitatori in concorrenza, con sessioni attive
- Vittime di robot "cattivi" che generano carichi necessari e inestimabili
- Alta percentuale di accessi a livelli di navigazione
- Numero elevato di query di ricerca
- Elevato volume di transazioni all'ora
- Modello mal costruito
- Troppe estensioni di terze parti / lente / ingombranti
- Link in entrata obsoleti che portano a un'alta percentuale di 404 visite
- Capacità dell'interfaccia di rete al limite
- Catalogo grande / complesso (molti prodotti / categorie / attributi)
Quindi, con negozi in tutto questo spettro, ognuno ha un approccio diverso per prestazioni più ottimali.
Per risolvere i problemi descritti sopra; eviteremo deliberatamente di dichiarare "hardware migliore / migliore"
- Usa un FPC oltre a quello di Varnish
- Filtra / blocca i bot danneggiati ai margini della rete o reindirizza tutte le richieste a Varnish indipendentemente dallo stato / URL del cookie
- Cambia la navigazione a livelli di magazzino in SOLR, rendi dipendenti i filtri di navigazione a livelli
- Modifica la ricerca titoli in SOLR
- Distribuisci il carico MySQL attraverso la configurazione Master / Slave - fallo solo quando il carico di navigazione è assorbito da Varnish / FPC
- Ricostruisci il modello
- Spogliali
- Monitorare continuamente i log di accesso e riscrivere gli URL su Nginx / Varnish prima della consegna. Se lo fai a livello di Nginx, assicurati che Varnish memorizzi nella cache i reindirizzamenti 301/302.
- Suddividere il contenuto statico in una rete CDN o migliorare la connettività
- Aggiungi altro hardware (beh, dovevamo dirlo ad un certo punto)
Quindi, con questo in mente, vedrai che probabilmente non ci sarà un file di configurazione Nginx, un file di configurazione del pool fcgi PHP, un file di configurazione MySQL o un file di configurazione Varnish che saranno gli stessi. Abbinalo alle modifiche hardware stesso; memoria disponibile, prestazioni I / O (HDD e rete) e CPU - e scoprirai che ci sono sottili variazioni che portano al guadagno delle prestazioni del 400% che desideri - ma nessuna risposta rapida troverai prontamente online.
È possibile copiare + incollare il white paper Magento sponsorizzato Peer 1 sulla peformance (non lo consigliamo); spero che le impostazioni non superino la memoria disponibile, i limiti dei thread, gli stati TCP / IP, la capacità I / O e portino a prestazioni inferiori rispetto a una configurazione Apache / mod_php vanilla.
Quindi continuiamo.
Lo stack server Magento ideale
È più probabile che ti avvicini alla realtà. Un buon esempio per dimostrarlo è mostrare come è configurato un sistema operativo Magento dedicato, MageStack
Prendi i sottocomponenti separati e avrai un elenco dei software più ottimali / critici, se configurato correttamente , per eseguire un negozio Magento. In particolare:
Firewall, filtro DOS, Load Balancer, Varnish, Nginx, PHP, Redis, Memcached, MySQL
Quindi quando chiedi:
Qual è la migliore installazione di Magento Server?
Qual è esattamente il tuo obiettivo?
- Alta disponibilità
- Affidabilità
- Semplicità di amministrazione
- Prestazione
- scalabilità
Basta lezione, come lo faremmo
Per rispecchiare parzialmente la risposta fornita in caso di errore del server in una direzione simile. Hai 3 server a tua disposizione, quindi prima orientali nel modo migliore. Eviteremo una soluzione altamente disponibile in quanto è molto al di là dell'ambito di questa risposta.
I sottocomponenti richiesti per una configurazione multi-server sono:
- Firewall
- Load Balancer
- Server web
- Server MySQL
- Archiviazione comune
Quindi polifunzioneremo alcuni dei sistemi. La conformità PCI-DSS determina un ruolo per ciascun server. Quindi, con 5 ruoli e 3 server, verrai immediatamente violato. MageStack aggira il problema utilizzando la virtualizzazione: potresti fare lo stesso.
Server 1: Load Balancer + Web server
Server 2: Web server
Server 3: Server database
Senza bassa latenza e significativa larghezza di banda di rete (> 1 Gbps, <125µs), anziché avere spazio di archiviazione comune, è meglio archiviare semplicemente la directory principale dello store su ogni macchina e replicare i dati, sia in tempo reale che ionotify
usando un cron
lavoro. Ancora una volta, eviteremo i file system di rete come NFS o i dispositivi a blocchi replicati come Gluster o DRBD, poiché sono necessari un ampio tuning e una larghezza di banda di rete decente.
La vernice deve sedersi il più vicino possibile alla parte anteriore. Ma Varnish non può decrittografare SSL. Quindi combinalo con un terminatore SSL; Nginx, Pound, Stunnel, Stud ecc. Il bilanciamento del carico integrato in Varnish non è eccezionale, ma sarebbe adeguato per una configurazione a 2 server.
Nginx + PHP-FPM va bene, ma non bere troppo del kool-aiuti Nginx. Funzionerà in modo quasi identico a una configurazione tradizionale di Apache / mod_php, ecco alcune buone letture sul perché non usare Nginx . Nginx è buono, molto buono, ma certamente non è un collo di bottiglia di un negozio Magento - e data la sua complessità e la mancanza di supporto nativo Magento. La maggior parte degli amministratori di sistema inesperti trarrebbe vantaggio dall'uso di Apache / mod_php su qualsiasi altra cosa. Questo può sembrare una raccomandazione arcaica sull'uso di PHP-FPM - ma i nostri test sulle prestazioni hanno dimostrato che le prestazioni sono solo ~ 7% più veloci con la soluzione Nginx - se configurate correttamente. L'ottimizzazione e l'esperienza richieste per una configurazione Nginx / PHP-FPM affidabile e ad alte prestazioni sono abbastanza vaste per riuscire a superare le prestazioni di Apache / mod_php. Qualunque cosa tu scelga di usare, è la tua chiamata.
Il server di database è semplice, MySQL. Ma come accennato in precedenza, se si dispone di un sito di conversione elevato, si consiglia una configurazione Master / Slave. Se seguire questo approccio può essere determinato leggendo questo articolo .
Quindi le cache di back-end periferiche, Memcached e Redis. Sui negozi più piccoli, l'archiviazione delle sessioni in un'istanza Memcache e la cache back-end veloce in un'altra offrono buoni vantaggi in termini di prestazioni. Non raccomandiamo di archiviare i tag cache in un backend lento, poiché causa più problemi di quanti ne dia. Quindi, con una configurazione Memcached, dovrai rinunciare alla codifica della cache . Invece, usiamo una configurazione come questa .
Redis non è nativo di Magento, ma con l'estensione di Colin Mollenhour - è una soluzione migliore di Memcache, supporta i tag cache, l'archiviazione delle sessioni e persino l'archiviazione persistente della cache - non è così volatile come Memcache . Ma ha i suoi svantaggi. Abbiamo riscontrato nei negozi di produzione su larga scala (> 500 ordini / ora,> 30k uniques / ora) che la cache (e i tag) possono riempirsi molto rapidamente e una volta raggiunto il punto di saturazione, il meccanismo LRU fallisce un po '( nonostante impostazioni diverse) e provoca un enorme collo di bottiglia immediato. Quindi è prudente eliminare manualmente i vecchi record manualmente.
Quindi quale hardware dovrebbe essere usato per cosa?
Server Web: CPU più veloce, maggior parte dei core della CPU, rapporto tra 2 GB di RAM /
Server DB principale : CPU veloce, I / O su disco più veloce, la maggior parte della RAM
Quindi, quando multi-scopo le tue 3 macchine, il layout migliore sarebbe:
Server 1: Terminator SSL -> Vernice -> Nginx / Apache> PHP
Server 2: Nginx / Apache> PHP, Redis, (MySQL Slave)
Server 3: MySQL
Per quanto riguarda la configurazione specifica di ogni applicazione. Bene, questo dipende dalle specifiche hardware, dalla complessità del negozio, dal tipo e dalla natura del visitatore e dall'ampio volume di visitatori.