Perché Nginx è così veloce?


31

In che modo un sito come rambler offre contenuti dinamici così velocemente? Ancora più veloce di Yahoo (che ha un server nel mio paese - Sud-est asiatico; rambler no).

Questa è puramente la capacità di Nginx? Dove dovrei cercare per conoscere tali capacità?

Praticamente un principiante qui, credo che serverfault.com se servito da Nginx sarà molto più veloce di IIS 7 (supponendo che il tempo di accesso al db sia lo stesso in entrambi i casi). È un presupposto giusto?

Modificare:

Posta da Karl usando Nginx di fronte a IIS7


Si noti che serverfault.com utilizza già Nginx (secondo Wappalyzer ). : P
WillS

Risposte:


26

È possibile visualizzare questa presentazione per una panoramica degli interni di nginx. La differenza principale è la gestione asincrona delle richieste invece di usare i thread come fa Apache. Puoi dare un'occhiata anche a questa documentazione .


2
Buona risposta all'architettura di nginx e al problema C10K. Tuttavia, capisco che la domanda dei PO riguarda la velocità di caricamento della pagina percepita, che ha poco a che fare con nginx.
Jesper M,

Cosa significa "asincrono"? Ho sempre pensato che significa eseguito in un thread separato.
Ivan,

Media asincrona Nginx funge sempre da proxy, anche con Php: Nginx ottiene la richiesta HTTP, invia al server Php MA non blocca / attende l'invio della risposta HTTP. Ecco perché vedi una differenza (velocità, CPU / RAM) per il sito Web ad alto traffico. Ma non c'è alcun miglioramento delle prestazioni per alcune richieste (che riguardano il 95% di Internet ....), ma Nginx è fantastico ;-)
Thomas Decaux,

21

In che modo un sito come rambler offre contenuti dinamici così velocemente? ... Questa è puramente la capacità di Nginx? Dove dovrei cercare per conoscere tali capacità?

Ciò non ha praticamente nulla a che fare con il web server utilizzato: sia nginx, IIS che Apache sono "abbastanza veloci" e generalmente fanno il loro lavoro in millisecondi. nginx è molto più veloce di Apache, ma ciò significa semplicemente che il proprietario del sito avrà bisogno di meno server per la parte che serve il web - nginx non trasferisce i dati più velocemente a te.

La parte meno importante è la velocità lato server , ovvero il tempo impiegato per creare l'HTML. La parte più importante è la prestazione di "frontend" , con cui intendo HTML, CSS, Javascript e immagini, il numero di questi, le dimensioni di questi e la corretta consegna (compressione HTTP, memorizzazione nella cache) di questi.

Naturalmente la velocità sul lato server è ancora importante, non sto dicendo che dovrebbe essere ignorato o che non importa. Ma in genere è la parte più piccola percepita della velocità dell'utente finale: il lavoro sul server viene spesso eseguito in meno di 500 millisecondi, ma la pagina non è pronta prima che siano trascorsi 3.000 - 5.000 millisecondi. La maggior parte di questo tempo va a scaricare le risorse del frontend (CSS, Javascript, Immagini).

Steve Souders ha svolto il lavoro originale mentre era in Yahoo, ora lavora in Google. Il suo primo libro "Siti Web ad alte prestazioni" è il miglior punto di partenza per saperne di più sulla creazione di siti Web veloci. Lo stesso materiale contenuto nel suo libro può essere trovato in questo video e in queste regole di progettazione . Tuttavia, trovo che il libro sia veloce da leggere e molto più facile da capire.

Puoi eseguire i siti attraverso il tester di WebPageTest.org, che ti darà una buona sensazione per la parte frontend di questi siti e perché sono più veloci o più lenti.

Credo che serverfault.com se servito da Nginx sarà molto più veloce di IIS 7 (supponendo che il tempo di accesso al db sia lo stesso in entrambi i casi). È un presupposto giusto?

No, questo è un malinteso. :-)


18

Nginx è più spesso usato per il bilanciamento del carico di altre applicazioni / server e serve contenuto statico di quanto non sia usato come server completo.

Ad esempio, puoi scrivere un'app usando uno dei tanti framework Python e avere nginx come front-end per molte istanze (forse distribuito su più macchine). In questo caso i server nginx hanno due scopi: gestisce le richieste di contenuto statico come immagini e fogli di stile direttamente (e grazie al suo design lo fa molto rapidamente) e trasmette richieste dinamiche all'applicazione distribuendo il carico tra tutte le istanze di cui è a conoscenza . Questa è una configurazione molto popolare anche nella community di Ruby on Rails.

Esistono altri due possibili motivi per cui Rambler potrebbe apparire più veloce rispetto al servizio Yahoo locale. In primo luogo, il PoP Yahoo locale potrebbe non avere abbastanza risorse disponibili per soddisfare il numero di richieste che diventa più veloce, quindi forse semplicemente aggiungere più hardware (supponendo che il software si ridimensiona in questo modo) lo accelererebbe (ma, presumibilmente, la differenza non è vale il costo di manutenzione del kit aggiuntivo o Yahoo lo avrebbe fatto). L'altra grande differenza potrebbe essere nel back-end piuttosto che nel web server: i due servizi avranno senza dubbio disposizioni di database molto diverse e, anche se non è probabile, non stiano eseguendo esattamente la stessa varietà di query (e la quantità di anche l'hardware dedicato all'archiviazione del database avrà un effetto significativo).

Analizzare il motivo per cui un servizio è più veloce di un altro (in generale o in circostanze specifiche) di solito non si tradurrà in un'unica risposta semplice: esistono molti modi per progettare un'app che si intende ridimensionare a molte migliaia di utenti, ognuna con la sua vantaggi, problemi e compromessi propri e anche se si tiene conto di tutte queste differenze ogni sito avrà una dinamica di base utente diversa, inoltre ci sono problemi di rete al di fuori del controllo dei progettisti.


3

nginx probabilmente ma un'architettura più scalabile con un ragionevole bilanciamento del carico di fronte a server di contenuti statici / generatori di contenuti dinamici. se vuoi davvero avere una grande esperienza per l'utente finale, dovresti probabilmente spostare il contenuto più vicino ai "bulbi oculari" - usa un po 'di CDN.

se sei interessato all'argomento - dai un'occhiata a questo e quello e .. beh - google; -]


2

I siti migliori utilizzano acceleratori di applicazioni come gli ZXTM di Zeus: in molti casi possono memorizzare nella cache risposte dinamiche, il che ovviamente è di grande beneficio.



0

Ho difficoltà a vedere serverfault molto più veloce (SO potrebbe avere problemi di caricamento a causa del traffico forse?) In quanto è già un caricamento istantaneo della pagina qui in UE sul mio percorso. È molto più rapido e reattivo rispetto alla maggior parte dei siti di notizie locali e così via.

La maggior parte degli ovvi problemi con tempi di caricamento e latenza proviene tra il server e l'utente finale e non le prestazioni effettive del server (a meno che qualcuno non abbia dimensionato o progettato qualcosa di sbagliato). Siti diversi possono essere indirizzati in modi diversi e c'è una grande possibilità che un sito locale per me abbia una latenza più grande di qualcosa in tutto il pianeta - tutto dipende da così tante variabili che non si può dire che sia risolvibile solo da un servizio upgrade / switch a meno che tu non sappia che è dove si trova il problema per un uso specifico (r) ...

Ovviamente la memorizzazione nella cache di vari tipi sul server fa una grande differenza, ma tutti questi siti lo fanno già per quanto ne so.

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.