Ottimizzare un server sovraccarico

ottimizzare server sovraccarico

Ottiizzare un server sovraccarico
Come determinare il collo di bottiglia di un server, correggere rapidamente il collo di bottiglia, migliorare le prestazioni del server e prevenire le perdite di posizionamento Google.

Panoramica #

Questa guida mostra come riparare un server sovraccarico in 4 passaggi:

Valuta: Determina il collo di bottiglia del server.
Stabilizza: implementa soluzioni rapide per mitigare l’impatto.
Migliora: aumenta e ottimizza le capacità del server.
Monitora: utilizzare strumenti automatizzati per prevenire problemi futuri.

Valutazione del Server sovraccarico

Quando il traffico sovraccarica un server, uno o più dei seguenti fattori possono diventare un collo di bottiglia:

  • CPU,
  • Rete,
  • Memoria o I/O del disco.

Identificare quale di questi è il collo di bottiglia, consente di concentrare gli sforzi di mitigazione più impattanti.

CPU:

l’utilizzo della CPU che supera costantemente l’80% non è un buon segno!

Questo deve essere analizzato e quindi corretto. Le prestazioni del server spesso peggiorano ulteriormente quando l’utilizzo della CPU raggiunge circa l’80-90% e diventano drammatiche man mano che l’utilizzo si avvicina al 100%.

L’utilizzo della CPU per servire una singola richiesta è trascurabile, ma farlo alla scala riscontrata durante i picchi di traffico, può sovraccaricare un server.

L’offload del servizio su altre infrastrutture, la riduzione delle operazioni costose e la limitazione della quantità di richieste ridurranno l’utilizzo della CPU.

Rete:

Durante i periodi di traffico elevato, il throughput della rete richiesto per soddisfare le richieste degli utenti può superare la capacità del server.

Alcuni siti web, a seconda del provider di hosting, potrebbero toccare dei limiti che riguardano il trasferimento cumulativo dei dati. La riduzione delle dimensioni e della quantità di dati trasferiti da e verso il server libererà  questo collo di bottiglia.

Memoria:

Quando un sistema non dispone di memoria sufficiente, i dati devono essere scaricati su disco per l’archiviazione. Ma quando questo è al limite l’accesso al disco è notevolmente più lento rispetto alla memoria e ciò può rallentare un’intera applicazione.

Se la memoria si esaurisce completamente, possono verificarsi errori di memoria insufficiente (OOM). La regolazione dell’allocazione della memoria, la correzione delle perdite di memoria e l’aggiornamento della memoria possono liberare questo collo di bottiglia.

I/O su disco:

la velocità con cui i dati possono essere letti o scritti dal disco è vincolata dal disco stesso. Se l’I/O del disco è un collo di bottiglia, l’aumento della quantità di dati memorizzati nella cache può alleviare questo problema (a costo di un maggiore utilizzo della memoria). Se non funziona, potrebbe essere necessario aggiornare i dischi.
Le tecniche in questa guida si concentrano sull’affrontare i colli di bottiglia della CPU e della rete. Per la maggior parte dei siti, CPU e rete saranno i colli di bottiglia più rilevanti durante un picco di traffico.

L’esecuzione di TOP sul server interessato è un buon punto di partenza per l’analisi dei colli di bottiglia. Se disponibile, integralo con i dati storici del tuo provider di hosting o con gli strumenti di monitoraggio.

A proposito se ancora non hai le idee chiare su cosa sia un Hosting leggi la nostra pagina “Cos’è un Hosting“.

Attenzione: se quando carichi il tuo sito web vedi un Errore 500 o un errore 502, questo significa che il tuo server ha un problema. Per risolvere questo problema leggi Errore 500 o Errore 502

Leggi anche: Il confronto dei migliori WP Plugin Cache

Stabilizzare un server sovraccarico

Un server sovraccarico può portare rapidamente a un serie di guasti in altre parti del sistema. Pertanto, è importante stabilizzare il server prima di tentare di apportare modifiche più significative.

Limite tariffario n.
La limitazione della velocità protegge l’infrastruttura limitando il numero di richieste in entrata. Questo è sempre più importante con il peggioramento delle prestazioni del server: con l’aumento dei tempi di risposta, gli utenti tendono ad aggiornare in modo aggressivo la pagina, aumentando ulteriormente il carico del server.

Aggiustare il server sovraccarico

Sebbene rifiutare una richiesta sia relativamente poco costoso, il modo migliore per proteggere il tuo server è gestire la limitazione della velocità da qualche parte a monte di esso, ad esempio tramite un sistema di bilanciamento del carico, un proxy inverso o una CDN.

Istruzioni:

NGINX
HAProxy
Microsoft IIS

Memorizzazione nella cache HTTP #

Cerca modi per memorizzare nella cache i contenuti in modo più aggressivo. Se una risorsa può essere servita da una cache HTTP (che sia la cache del browser o una CDN), non è necessario richiederla al server di origine, il che riduce il carico del server.

Le intestazioni HTTP come Cache-Control, Expires ed ETag indicano come una risorsa dovrebbe essere memorizzata nella cache da una cache HTTP. Il controllo e la correzione di queste intestazioni migliorerà la memorizzazione nella cache.

Sebbene i service worker possano essere utilizzati anche per la memorizzazione nella cache, utilizzano una cache separata e sono un supplemento, piuttosto che un sostituto, per una corretta memorizzazione nella cache HTTP.

Per questo motivo, quando si gestisce un server sovraccarico, gli sforzi dovrebbero essere concentrati sull’ottimizzazione della memorizzazione nella cache HTTP.

Diagnostica

Esegui Lighthouse ed esamina le risorse statiche del servizio con un controllo efficiente dei criteri della cache per visualizzare un elenco di risorse con un tempo di vita breve o medio (TTL). Per ogni risorsa elencata, considera se il TTL deve essere aumentato.

Come linea guida approssimativa segui:

  • Le risorse statiche devono essere memorizzate nella cache con un TTL lungo (1 anno).
  • Le risorse dinamiche devono essere memorizzate nella cache con un breve TTL (3 ore).

Aggiustare un server Sovraccarico

Imposta la direttiva max-age dell’intestazione Cache-Control sul numero di secondi appropriato.

Istruzioni:

Nota: la direttiva max-age è solo una delle tante direttive di memorizzazione nella cache. Esistono molte altre direttive e intestazioni che influenzeranno il comportamento di memorizzazione nella cache della tua applicazione. Per una spiegazione più approfondita della strategia di memorizzazione nella cache, si consiglia vivamente di leggere HTTP Caching.

Graceful degradation

Il grazioso degrado è la strategia di riduzione temporanea della funzionalità al fine di eliminare il carico in eccesso da un sistema. Questo concetto può essere applicato in molti modi diversi: ad esempio, servendo una pagina di testo statica invece di un’applicazione completa, disabilitando la ricerca o restituendo meno risultati di ricerca o disabilitando alcune funzionalità dispendiose o non essenziali. L’accento dovrebbe essere posto sulla rimozione di funzionalità che possono essere rimosse in modo semplice e sicuro con un impatto aziendale minimo.

Ottimizzare un Server Sovraccarico

Utilizzare una rete di distribuzione dei contenuti (CDN) #
La gestione delle risorse statiche può essere scaricata dal server a una rete di distribuzione dei contenuti (CDN), riducendo così il carico.

La funzione principale di una rete CDN è fornire rapidamente contenuti agli utenti fornendo una vasta rete di server che si trovano vicino agli utenti. Tuttavia, la maggior parte delle CDN offre anche funzionalità aggiuntive relative alle prestazioni come compressione, bilanciamento del carico e ottimizzazione dei media.

Impostare una CDN

Le CDN traggono vantaggio dalla scalabilità, quindi gestire la propria CDN raramente ha senso. Una configurazione CDN di base è abbastanza veloce da configurare (~30 minuti) e consiste nell’aggiornamento dei record DNS in modo che puntino alla CDN.

Ottimizza utilizzo CDN

diagnostica 
Identifica le risorse che non vengono servite da una rete CDN (ma dovrebbero esserlo) eseguendo WebPageTest. Nella pagina dei risultati, fai clic sul quadrato sopra “Uso efficace della CDN” per visualizzare l’elenco delle risorse che dovrebbero essere servite da una CDN.

Aggiustare il server sovraccarico – CDN

Se una risorsa non viene memorizzata nella cache dalla CDN, verificare che siano soddisfatte le seguenti condizioni:

  • Possiede un Cache-Control: public header.
  • Ha un’intestazione Cache-Control: s-maxage, Cache-Control: max-age o Expires.
  • C’è un’intestazione Content-Length, Content-Range o Transfer-Encoding.

Dimensiona le risorse di calcolo

La decisione di ridimensionare le risorse di calcolo dovrebbe essere presa con attenzione. Sebbene sia spesso necessario ridimensionare le risorse di calcolo, farlo prematuramente può generare complessità architettonica e costi non necessari.

diagnostica

Un TTFB (Time To First Byte) elevato può indicare che un server sta per raggiungere la sua massima capacità. Puoi trovare queste informazioni nell’audit Lighthouse Riduci i tempi di risposta del server (TTFB).

Per indagare ulteriormente, utilizza uno strumento di monitoraggio per valutare l’utilizzo della CPU. Se l’utilizzo attuale o previsto della CPU supera l’80%, dovresti considerare di aumentare i tuoi server.

Aggiustare il server sovraccarico

L’aggiunta di un sistema di bilanciamento del carico consente di distribuire il traffico su più server. Un servizio di bilanciamento del carico si trova davanti a un pool di server e instrada il traffico al server appropriato.

I provider cloud offrono i propri sistemi di bilanciamento del carico (GCP, AWS, Azure) oppure puoi configurarne uno personalizzato utilizzando HAProxy o NGINX.

Una volta installato un sistema di bilanciamento del carico, è possibile aggiungere server aggiuntivi.

Oltre al bilanciamento del carico, la maggior parte dei provider cloud offrono la scalabilità automatica (GCP, AWS, Azure). La scalabilità automatica funziona insieme al bilanciamento del carico: la scalabilità automatica scala automaticamente le risorse di calcolo su e giù in base alla domanda in un determinato momento. Detto questo, la scalabilità automatica non è magia: ci vuole tempo prima che nuove istanze siano online e richiede una significativa fase di configurazione. A causa della complessità aggiuntiva che comporta la scalabilità automatica, è necessario considerare prima una configurazione più semplice basata sul bilanciamento del carico.

Abilita la compressione

Le risorse basate su testo devono essere compresse utilizzando gzip o brotli. Gzip può ridurre le dimensioni di trasferimento di queste risorse di circa il 70%.

diagnostica
Utilizzare il controllo Lighthouse Enable text compression per identificare le risorse che devono essere compresse.

Aggiustare il server sovraccarico (Compressione)

Abilita la compressione aggiornando la configurazione del tuo server. Istruzioni:

NGINX
Apache
Microsoft

Ottimizza immagini e media

Le immagini costituiscono la maggior parte delle dimensioni dei file della maggior parte dei siti Web; l’ottimizzazione delle immagini può ridurre in modo rapido e significativo le dimensioni di un sito.

diagnostica
Lighthouse ha una varietà di controlli che segnalano potenziali ottimizzazioni dell’immagine. In alternativa, un’altra strategia consiste nell’utilizzare DevTools per identificare i file immagine più grandi: queste immagini saranno certamente buoni candidati per l’ottimizzazione.

Audit rilevanti di Lighthouse:

  • Immagini di dimensioni adeguate
  • Rinvia le immagini fuori schermo
  • Codifica le immagini in modo efficiente
  • Offri immagini in formati di nuova generazione
  • Usa i formati video per i contenuti animati

Flusso di lavoro di Chrome DevTools:

  • Registra l’attività di rete
  • Fare clic su Img per filtrare le risorse non di immagine
  • Fare clic sulla colonna Dimensioni per ordinare i file di immagine in base alle dimensioni

Aggiustare il server sovraccarico (Immagini)

Se hai poco tempo…

Concentra il tuo tempo sull’identificazione di immagini grandi e caricate di frequente e sull’ottimizzazione manuale con uno strumento come Squoosh. Le immagini Hero sono spesso buoni candidati per una bella ottimizzazione.

Cose da tenere a mente:

  • Dimensioni: le immagini non devono essere più grandi del necessario.
  • Compressione: in generale, un livello di qualità di 80-85 avrà un effetto minimo sulla qualità dell’immagine producendo una riduzione del 30-40% delle dimensioni del file.
  • Formato: usa JPEG per le foto anziché PNG; usa MP4 per contenuti animati anziché GIF.
    Se hai più tempo…

Prendi in considerazione la creazione di una CDN di immagini se le immagini costituiscono una parte sostanziale del tuo sito. Le CDN di immagini sono progettate per servire e ottimizzare le immagini e scaricheranno immagini servendole dal server di origine.

La configurazione di una CDN di immagini è semplice, ma richiede l’aggiornamento degli URL di immagini esistenti in modo che puntino alla CDN di immagini.

Ulteriori letture:

Minimizza JS e CSS

La minimizzazione rimuove i caratteri non necessari da JavaScript e CSS.

diagnostica
Usa gli audit Minimizza CSS e Minimizza JavaScript Lighthouse per identificare le risorse che necessitano di minimizzazione.

Aggiustare un server sovraccarico (minimizzare JS CSS)

Se hai poco tempo, concentrati sulla minimizzazione del tuo JavaScript. La maggior parte dei siti ha più JavaScript che CSS, quindi questo avrà un impatto maggiore.

Riduci JavaScript
Minimizza CSS

Monitoraggio

Gli strumenti di monitoraggio del server forniscono un importante raccolta di dati, dashboard e avvisi relativi alle prestazioni del server. Il loro utilizzo può aiutare a prevenire e mitigare futuri problemi di prestazioni del server.

Una configurazione di monitoraggio dovrebbe essere mantenuta il più semplice possibile. Un’eccessiva raccolta di dati e avvisi ha i suoi contro: maggiore è l’alerting o la frequenza della raccolta dei dati, più costosa è la raccolta e l’archiviazione; un alerting eccessivo porta inevitabilmente a perdersi pagine per strada.

Gli avvisi dovrebbero utilizzare metriche che rilevano in modo coerente e accurato i problemi. Il tempo di risposta del server (latenza) è una metrica che funziona particolarmente bene per questo: rileva un’ampia varietà di problemi e si correla direttamente con l’esperienza dell’utente. Gli avvisi basati su metriche di livello inferiore come l’utilizzo della CPU possono essere un utile supplemento, ma rilevano un sottoinsieme più piccolo di problemi.

Inoltre, l’alert dovrebbe basarsi sulla performance osservata in coda (in altre parole il 95° o 99° percentile), piuttosto che sulle medie. In caso contrario, le medie possono facilmente oscurare problemi che non interessano tutti gli utenti.

Aggiustare un server sovraccarico (Monitoraggio)

Tutti i principali fornitori di cloud offrono i propri strumenti di monitoraggio (GCP, AWS, Azure). Inoltre, Netdata è un’eccellente alternativa gratuita e open source. Indipendentemente dallo strumento scelto, sarà necessario installare l’agente di monitoraggio dello strumento su ogni server che desideri monitorare. Una volta completato, assicurati di impostare gli avvisi.

Istruzioni:

GCP
AWS
Azure
Netdata

In questo post, hai imparato come migliorare ottimizzare un server sovraccarico utilizzando varie tecniche. A volte, può essere opprimente comprendere tutto il gergo tecnico e applicarlo perfettamente.

Fortunatamente, un provider hosting veloce come il Nostro Nitro Cloud e un plug-in di grandi prestazioni come WP Rocket possono aiutarti a ottenere un buon risultato fin da subito.

Se vuoi ricevere una nostra consulenza immediata per la velocità del tuo sito, Contattaci Subito!