Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Quali sono le impostazioni ottimali che posso utilizzare per Apache o NGINX come server di backend per ELB?
Desidero utilizzare un'istanza Amazon Elastic Compute Cloud (Amazon EC2) che esegue Apache o NGINX come server di backend per Elastic Load Balancing (ELB). Desidero conoscere le impostazioni che assicurano le migliori prestazioni.
Risoluzione
Per ottenere le migliori prestazioni, analizza i tempi di risposta dell’applicazione di backend e i requisiti dei client.
Timeout dell'intestazione del client
Se il server di backend chiude una connessione e non invia una notifica al bilanciatore del carico, potresti ricevere un errore HTTP 502 per un Application Load Balancer. Per un Classic Load Balancer, ricevi un errore HTTP 504.
Per evitare connessioni inattive, imposta il timeout dell'applicazione su un valore superiore al valore del timeout di inattività. Per configurare il timeout dell'applicazione per Apache, consulta TimeOut Directive (Direttiva TimeOut) sul sito web Apache. Per NGINX, consulta client_header_timeout sul sito web NGINX.
Keepalive
Per ridurre l'utilizzo della CPU e migliorare i tempi di risposta, attiva keepalive. Quando attivi keepalive, il bilanciatore del carico non stabilisce una nuova connessione TCP per ogni richiesta HTTP.
Per attivare keepalive in Apache, consultate KeepAlive Directive (Direttiva KeepAlive) sul sito web Apache. Per attivare keepalive in NGINX, imposta keepalive_disable su none. Per ulteriori informazioni, consulta keepalive_disable sul sito web NGINX.
Quando attivi l'opzione keepalive, scegli un timeout keepalive più lungo rispetto al timeout di inattività del bilanciatore del carico. Per configurare il timeout in Apache, consulta KeepAliveTimeout Directive (Direttiva KeepAliveTimeout) sul sito web Apache.Per NGINX, consulta keepalive_timeout sul sito web NGINX.
Timeout di lettura
Imposta timeout di lettura adatti ai tempi di risposta dell'applicazione. Il bilanciatore del carico deve mantenere la connessione aperta abbastanza a lungo da ricevere sia l'intestazione che il corpo della richiesta.
Nota: controlla che il valore del timeout di inattività del bilanciatore del carico sia inferiore al timeout del backend.
Per impostare il timeout di lettura delle richieste in Apache, consulta RequestReadTimeout Directive (Direttiva RequestReadTimeout) sul sito web Apache. Per impostare il timeout dell'intestazione del client in NGINX, consulta client_header_timeout sul sito web NGINX. Per il timeout del corpo del client in NGINX, consulta client_body_timeout sul sito web NGINX.
Numero massimo di richieste keepalive
Quando attivi keepalive, imposta il numero di richieste servite da una singola connessione TCP su 100 o più. Per impostare il numero di richieste in Apache, consulta MaxKeepAliveRequests Directive (Direttiva MaxKeepAliveRequests) sul sito web Apache. Per NGINX, consulta keepalive_requests sul sito web NGINX.
AcceptFilter
Per impostazione predefinita, AcceptFilter è attivato. AcceptFilter indica ad Apache di utilizzare l'opzione TCP_DEFER_ACCEPT per le connessioni e può far sì che il socket TCP rimanga in uno stato semiaperto. Quando il socket TCP rimane semiaperto, il bilanciatore del carico presume che la connessione sia stata stabilita, ma l'istanza di backend non stabilisce completamente la connessione. Le connessioni semiaperte sono più comuni nei bilanciatori del carico a basso volume in cui le connessioni rimangono inattive prima dell'utilizzo.
Per configurare AcceptFilter in Apache, consulta AcceptFilter Directive (Direttiva AcceptFilter) sul sito web Apache. Per NGINX, consulta listen sul sito web NGINX.
Registrazione
Per attivare l'opzione %{X-Forwarded-For}i in modo che Apache visualizzi l'intestazione ELB x-forwarded-for nei suoi log per ogni richiesta, esegui questo comando:
LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" combined
L'intestazione ELB x-forwarded-for contiene l'indirizzo IP del client originale. L'opzione %D aggiunge il tempo necessario per completare ogni richiesta ai log di accesso.
Apache MPM
L'evento Apache Multi-Processing Module (MPM) potrebbe chiudere prematuramente le connessioni dai bilanciatori del carico e causare un errore HTTP 502 di un Application Load Balancer. Nel caso di un Classic Load Balancer, ricevi un errore HTTP 504.
È consigliabile utilizzare piuttosto il MPM worker.
Nota: dopo avere aggiornato la configurazione, riavvia Apache o NGINX.
Informazioni correlate
- Argomenti
- Networking & Content Delivery
- Lingua
- Italiano
