Benefici di prestazione dell'utilizzo di NGINX


16

Considerando l'utilizzo di NGINX per servire magento, non sono preoccupato per i dettagli di implementazione, ma voglio sapere se qualcuno ha cose buone (o cattive) da dire al riguardo. Anche di particolare interesse è l'utilizzo di NGINX per il bilanciamento del carico magento.


abbiamo 2 negozi in esecuzione su un server dedicato con NginX. Per i negozi ad alto traffico c'è sicuramente un vantaggio in quanto NginX gestisce meglio le richieste e lascia più risorse per Magento. Per i negozi a basso traffico non sono sicuro che ci sia qualche vantaggio
Sander Mangel

Risposte:


15

Nginx è sicuramente una buona scelta per l'hosting di Magento e offre numerosi vantaggi (ma piccoli) che possono aiutare a migliorare le prestazioni del sito.

La differenza principale tra Nginx e Apache è che Nginx utilizza IO non bloccato e Apache utilizza solo il multithreading / elaborazione. Qual è la differenza e perché è importante? Bene, nel caso di Apache, supponiamo che abbia 5 thread, in grado di gestire 5 richieste per qualcosa in qualsiasi momento. Se uno di questi thread impiega molto tempo per terminare, rimangono solo 4 thread per gestire eventuali ulteriori richieste in arrivo. Se tutti e 5 i thread vengono bloccati, nessuna richiesta in arrivo può essere gestita fino al termine.

Con Evented IO quando un thread riceve una richiesta per qualcosa, genera un evento e passa direttamente alla richiesta successiva. Quando l'evento richiama, passa la risposta al client pertinente.

Questo è approssimativamente simile a come funziona JavaScript asincrono. Spegni una richiesta AJAX e prosegui fino a quando non ricevi una richiamata.

Questo approccio moderno è adatto a servire molti piccoli file statici senza il sovraccarico di generare molti thread o processi di sistema di lavoro.

L'altro vantaggio di Nginx è il suo ingombro di memoria ridotto. Apache supporta MOLTE cose e, nel farlo, ha una memoria elevata e un'impronta computazionale. Puoi rimetterlo a posto, ma Nginx è progettato da zero per essere magro in termini di memoria.

Le differenze non sono enormi, ma man mano che aumenti fino a molte migliaia di richieste, quelle piccole differenze, in totale, fanno una grande differenza.

Ora è importante ricordare che il maggiore collo di bottiglia delle prestazioni in un'applicazione Magento è l'esecuzione del codice PHP. Qui c'è una differenza sostanzialmente trascurabile nelle prestazioni tra Apache e Nginx. L'importante è usare PHP-FPM e il lavoratore MPM con Apache (ed evitare decisamente prefork / mod-php). Il motivo principale è che invochi un interprete PHP solo quando è necessario eseguire il codice PHP e puoi utilizzare in modo efficace il software di memorizzazione nella cache del codice operativo come APC (e questo è il singolo più grande incremento delle prestazioni che otterrai).

Ultimo punto da sottolineare: alcuni moduli / applicazioni prevedono l'utilizzo di Apache e la documentazione potrebbe essere orientata all'uso di ModRewrite o all'uso di file .htaccess. Mentre esiste il supporto per lo stile ModRewrite in Nginx, non esiste il supporto per le soluzioni di stile .htaccess per directory.

Personalmente, mi piace Nginx perché serve in modo efficiente contenuti statici, è molto facile impostare PHP-FPM e mi piace molto la sua sintassi di configurazione. Non è una soluzione di proiettile magico per problemi di prestazioni, ma è un'opzione solida e flessibile da considerare.


1
Un'ottima risposta supportata dalle scoperte di Magento, Inc.: magentocommerce.com/whitepaper
benmarks

Sì, sono d'accordo con Aaron al 100%, anche noi utilizziamo Nginx per la maggior parte delle nostre distribuzioni Magento a causa della sua capacità di server più veloce contenuto statico e gestire un numero maggiore di richieste simultanee rispetto ad Apache. L'unico aspetto negativo che abbiamo riscontrato con Nginx è su uno dei nostri progetti, che genera casualmente un errore di timeout del gateway 504 (anche quando i carichi del server sono piuttosto bassi). Non abbiamo ancora risolto questo problema ... la maggior parte delle soluzioni descritte in vari forum non ha aiutato molto.
Vinci Rufus,

1

Direi che il vantaggio in termini di prestazioni di Nginx quando si utilizza Magento è trascurabile. Il vantaggio IO basato sugli eventi, come menzionato da Aaron, si applica anche ad Apache (quando si utilizza l'evento MPM).

Parlando di Magento in generale, la maggior parte dell'elaborazione (99%) avviene in PHP e nel database, quindi l'ottimizzazione del primo 1% ti darà relativamente pochi vantaggi.

Tuttavia, ci sono altri motivi per scegliere Nginx per Magento, come un footprint di memoria più piccolo, un limite di velocità migliore e supporto SPDY, solo per citarne alcuni.

C'è un grande svantaggio di Nginx quando si convertono i siti Magento esistenti in esecuzione su Apache, poiché molte istruzioni .htaccess non si associano direttamente alle istruzioni Nginx. Ad esempio, Nginx non supporta i nomi host negli ACL.

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.