GNU/Linux >> Linux Esercitazione >  >> Linux

Ottimizzazione delle prestazioni di Nginx

Nginx è un server Web open source gratuito con prestazioni elevate e peso ridotto, utilizzato come bilanciatore del carico, proxy inverso, cache HTTP e proxy di posta. Sebbene Nginx sia piuttosto nuovo rispetto ad altri server web, la sua popolarità è in aumento grazie alle sue elevate prestazioni. Con la configurazione predefinita di Nginx, potresti ottenere prestazioni veloci, ma possiamo aumentare ulteriormente le prestazioni di Nginx modificando alcune configurazioni.

In questo articolo imparerai 8 modi diversi per migliorare le prestazioni di Nginx. Per illustrare l'esempio in questo articolo, ho installato Nginx sul sistema Ubuntu 22.04 LTS.

Modifica processi di lavoro

Tutte le richieste del server Web in Nginx sono gestite da un processo di lavoro. In Nginx, i processi di lavoro vengono creati come più processi di lavoro per gestire la richiesta e un processo master è responsabile della gestione di tutti i processi di lavoro e dell'analisi della configurazione. Nella configurazione predefinita di Nginx, il parametro del processo di lavoro è impostato su auto, che avvia il processo di lavoro a seconda del core della CPU disponibile. Come raccomandato nei documenti ufficiali di Nginx, è il modo migliore per mantenere il processo di lavoro in base al core della CPU disponibile, quindi auto è il parametro consigliato. Se vuoi sapere quanti core hanno i tuoi processori, esegui semplicemente il seguente comando.

$ grep processor /proc/cpuinfo | wc -l

Puoi modificare il valore predefinito del processo di lavoro dal file di configurazione Nginx che si trova in /etc/nginx/nginx.conf. Se il tuo server sta riscontrando un traffico maggiore e devi aggiungere più processi di lavoro, è meglio aggiornare il server a più processori principali.

Miglioramento del limite di connessioni dei lavoratori

Connessione di lavoro è il numero totale di connessioni simultanee che ogni processo di lavoro disponibile può gestire. Per impostazione predefinita, il processo di lavoro può gestire 512 connessioni alla volta. Prima di modificare il valore della connessione lavoratore è necessario controllare il sistema di connessione max per consentire l'utilizzo del seguente comando per aggiornare la configurazione della connessione in base ad essa.

$ ulimit -n

Per migliorare Nginx al massimo delle sue potenzialità, imposta il valore della connessione di lavoro sul massimo sistema di connessione consentito dal sistema nel file nginx.conf.

Implementazione della compressione dei contenuti

Per la compressione dei contenuti Web, Nginx utilizza gzip per aumentare i tempi di consegna dei contenuti e ridurre l'utilizzo della larghezza di banda della rete. Nella configurazione, potresti trovare la configurazione di gzip nello stato commentato ma puoi decommentare e modificare gzip in base alle tue esigenze. Poiché il processo di compressione gzip utilizza le risorse di sistema, se hai risorse limitate modifica la configurazione in base ad essa, ad esempio comprimendo solo un tipo specifico di file, livello di compressione, ecc.

Memorizzazione nella cache di contenuto statico

In questo moderno sviluppo Web, la maggior parte dei contenuti viene servita in modo statico al browser o al client, quindi la memorizzazione nella cache dei file statici caricherà il contenuto più velocemente. Ridurrà anche la richiesta di connessione a Nginx man mano che i contenuti vengono caricati dalla cache. Per avviare il processo di memorizzazione nella cache, aggiungi la seguente direttiva al file di configurazione dell'host virtuale Nginx.

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;}

La direttiva precedente memorizza nella cache il file di risorse per 30 giorni. Puoi impostare la data di scadenza della cache in base alle tue esigenze.

Buffering

Il buffering può rendere più efficiente la comunicazione tra client e server poiché conserva parte della risposta fino a quando il buffer non si riempie. Se la risposta è troppo alta rispetto alla dimensione effettiva del buffer, Nginx scriverà la risposta sul disco che potrebbe causare un problema di prestazioni. Puoi aggiornare la seguente direttiva per regolare la dimensione del buffer in base alle tue esigenze.

Client_body_buffer_size :determina la dimensione effettiva del buffer utilizzata per contenere i dati di risposta del client.

Client_header_buffer_size :Gestisce la dimensione dell'intestazione del client. Normalmente l'impostazione del valore su 1k è abbastanza buona.

Client_max_body_size :Limita la risposta massima del corpo consentita al cliente. Se la dimensione del corpo supera il suo valore, Nginx genererà l'errore con "Richiesta entità troppo grande".

Per regolare la dimensione del buffer, aggiungi la seguente direttiva all'interno della sezione http.

http {
…
client_body_buffer_size 80k;
client_max_body_size 9m;
client_header_buffer_size 1k;
...
}

Accedi al buffer del registro

La registrazione è uno dei ruoli fondamentali nel debug del problema e nel controllo. Poiché la registrazione memorizza tutti i dati di richiesta che influiscono sia sui cicli di I/O che sulla CPU che provocano problemi di prestazioni. È possibile ridurre questo tipo di impatto abilitando il buffering nel log. Una volta che la dimensione del buffer raggiunge il limite, Nginx scrive il contenuto del buffer nel log. Puoi abilitare il buffering aggiungendo parametri del buffer con valori di dimensione alla direttiva del registro di accesso.

access_log /var/log/nginx/access.log main buffer=16k;

Oppure puoi disabilitare il log di accesso (se non necessario) nel modo seguente.

access_log off;

Limitare i valori di timeout

La limitazione del valore di timeout migliorerà le prestazioni di Nginx. Nginx attenderà il corpo del cliente e la richiesta di intestazione per il periodo di tempo specificato. Se non ricevono i dati di risposta in tempo, Nginx attiva un timeout per il rispettivo client. Il valore di timeout può essere gestito dalla seguente direttiva. Per impostare la durata del timeout, copia e incolla la direttiva riportata di seguito nella sezione http.

client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 13;
send_timeout 10;

Il timeout del corpo del client e dell'intestazione è un periodo di tempo Nginx per leggere l'intestazione e il corpo dalla richiesta del client. Se non completata in tempo la richiesta viene terminata con errore di timeout. Keepalive_timeout è la durata dopo che nginx chiude la connessione client la connessione keep-alive rimane aperta. Send_timeout è la durata per la quale il client deve ricevere la risposta inviata da Nginx.

Apri la cache dei file

In Linux quasi tutto è un file, quando viene utilizzato open_file_cache, il descrittore di file e tutti i file a cui si accede di frequente vengono memorizzati nella cache sul server. Soprattutto quando si servono i file Html statici utilizzando la cache dei file aperti migliorerà le prestazioni di Nginx poiché apre e archivia la cache in memoria per un determinato intervallo. Inserisci la seguente direttiva di open_file_cache nella sezione http per avviare la memorizzazione nella cache.

http {
...
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

Conclusione

Questi sono otto modi per aumentare le prestazioni di un server Web Nginx mediante una semplice modifica del file di configurazione Nginx. Spero che la lettura di questo articolo ti aiuti a migliorare la configurazione di Ngunx per ottenere le massime prestazioni possibili sul tuo server, server o sistema cloud.


Linux
  1. MySQL – Ottimizzazione e ottimizzazione delle prestazioni

  2. Installa Nginx su Fedora

  3. Installa Nginx su Ubuntu

  4. dd prestazioni su Mac OS X rispetto a Linux

  5. Opzioni di ottimizzazione delle prestazioni del filesystem per ext3

Installa Nginx Amplify su CentOS 8/RHEL 8 per monitorare le prestazioni LEMP

Come ottenere le migliori prestazioni dal server Nginx

Come riparare le connessioni di lavoro non sono sufficienti errori su Nginx

Come mettere a punto NGINX per il prossimo 2022?

Installa Nginx su Ubuntu 18.04

Introduzione al monitoraggio e all'ottimizzazione delle prestazioni di Linux