Come funziona NGINX – Un’infografica per scoprirlo – 1

Un'infografica fornisce una panoramica di alto livello sul funzionamento di NGINX. Analizziamola insieme per capirele potenzialità di questo web server

Come funziona NGINX – Un’infografica per scoprirloNGINX è il web server che si distingue rispetto alla concorrenza grazie alle sue elevate prestazioni. A differenza di tanti altri web server e application server, che utilizzano un’architettura semplice basata sui processi, NGINX si distingue per una sofisticata architettura event-driven che gli consente di scalare centinaia di connessioni simultanee sfruttando hardware moderno.

In quest’articolo ci soffermeremo su un’infografica che mette in risalto la potenza di NGINX, mostrando come questo sia capace di gestire connessioni multiple all’interno di un unico processo. L’inforgrafica fornisce infatti una panoramica di alto livello di come funzioni NGINX. Ci soffermeremo quindi su ogni dettaglio per comprendere il funzionamento di questo web server e le sue potenzialità.

Il modello di processo di NGINX

Prima di valutare i vantaggi di NGINX è necessario comprendere il suo funzionamento. NGINX è caratterizzato da un processo principale (Master Process) in grado di eseguire delle operazioni privilegiate, ed un certo numero di processi a supporto che vanno sotto il nome di Child Processes.

nginx infografica 1

Ad esempio nell’immagine che segue viene illustrato un server NGINX a 4 core il cui processo master genera 4 processi di lavoro e due processi di cache.

nginx infografica 2

L’importanza dell’architettura

Alla base di qualsiasi applicazioni Unix vi sono i thread o processi. Dal punto di vista del sistema operativo Linux si tratta più o meno della stessa cosa, a meno della modalità con cui condividono la memoria. In particolare un thread o un processo è un insieme di istruzioni che il sistema operativo può pianificare per eseguire su un core CPU.

La maggior parte delle applicazioni esegue thread o processi in parallelo al fine di utilizzare più core contemporaneamente e gestire connessioni simultanee. I thread e processi utilizzano oltre alla memoria anche altre risorse del sistema operativo. I moderni server sono in grado di gestire fino a centiaia di piccoli thread o processi contemporaneamente, ma le prestazioni degradano nel momento in cui la memoria viene esaurita.

Il modo più comune di progettare quindi applicazioni di rete è quello di assegnare un thread o un processo ad ogni singola connessione. Si tratta di una architettura semplice da implementare, ma purtroppo non è facilmente scalabile quando si devono gestire migliaia di connessioni.

Come funziona NGINX

Il processo di lavoro di NGINX è davvero semplice:

  1. Il processo master esegue delle operazioni privilegiate (come le operazioni di configurazione) e crea un certo numero di processi figli.
  2. All’avvio viene eseguito il processo di cache loader per caricare la cache basata su disco nella memoria.
  3. Il cache manager viene eseguito periodicamente e sfoltisce le voci della cache per mantenere le dimensioni entro i limiti di configurazione.
  4. I processi worker fanno il resto del lavoro: gestiscono le connessioni di rete, leggono e scrivono i contenuti su disco e così via.

La configurazione raccomandata per NGINX prevede l’esecuzione di un processo di lavoro per ogni core CPU in modo tale da rendere più efficiente l’utilizzo delle risorse hardware. Questa configurazione è già prevista dalla direttiva:

In NGINX ogni processo di lavoro è single-threaded e viene eseguito in modo indipendente. I processi possono comunicare tra di loro utilizzando la memoria cache condivisa e altre risorse condivise.

All’interno del processo NGINX Worker

nginx infografica 3

Ogni processo di lavoro NGINX viene inizializzato con una configurazione ed è provvisto di un set di sockets per l’ascolto del processo master. I processi di lavoro per iniziare attendono degli eventi che si verificano grazie a nuove connessioni in ingresso. Queste connessioni sono assegnate in genere ad una HTTP state machine, ma NGINX implementa anche state machine per il traffico o per un numero di protocolli email (SMTP, POP, IMAP).

nginx infografica 4

Una state machine rappresenta un insieme di istruzioni che indicano a NGINX come elaborare una richiesta. Anche altri web server utilizzano state machine simili a NGINX, ma la differenza consiste nella realizzazione. Nella prossima parte dell’articolo scopriremo il perché. Continuate a seguirci.

Facci sapere cosa ne pensi!

Facci sapere cosa ne pensi!

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *