Prepararsi per un enorme picco di traffico


35

La nostra compagnia apparirà in uno spettacolo televisivo in prima serata questa settimana e ci hanno detto che possiamo aspettarci circa 200.000 visitatori sul nostro sito web contemporaneamente.

Normalmente riceviamo solo circa 100 visite al giorno, quindi non ho idea di poter gestire così tanto traffico. Siamo ospitati da 1and1.co.uk.

Ci sono delle precauzioni che possiamo prendere per evitare che il nostro sito venga paralizzato?


3
Hai letto questo? Consiglio vivamente di abilitare un servizio come CloudFlare a gestire almeno le risorse statiche. webmasters.stackexchange.com/questions/14394/…
richhallstoke

10
Dovresti parlare con 1and1.co.uk il più rapidamente possibile! possono spostare il tuo sito Web in uno dei servizi VPS con un elevato rapporto CPU / RAM / larghezza di banda che consentirà il picco! successivamente possono quindi ridurre la CPU / RAM per risparmiare denaro
Simon Hayter

1
Sei su un piano di hosting condiviso con 1 & 1? In tal caso, devi davvero cercare una soluzione alternativa (VPS molto potente o hosting basato su cloud) al più presto. Dubito fortemente che qualsiasi ambiente di hosting condiviso possa gestire quel tipo di traffico.
Sean,

3
Ero un host web. La maggior parte degli host può gestire picchi come questo abbastanza facilmente se li conoscono in anticipo e possono aiutarti con tutta una serie di opzioni normalmente non offerte. Il motivo è semplice. Probabilmente hanno a portata di mano attrezzature come cache hardware, server extra, opzioni di bilanciamento del carico, opzioni di failover, ecc. L'idea è quella di sembrare in grado di gestire qualsiasi cosa con grazia. Fa bene agli affari. La maggior parte imposterà queste opzioni gratuitamente. In realtà è una parte normale del business.
closetnoc,

Ti piace sapere che esistono strumenti per testare il carico pesante del server. Non ne conosco nessuno per nome, ma sono facilmente reperibili. Amplifica le impostazioni e puoi darti un testdrive controllato senza affrontare te stesso quando si presentano le persone reali :)
Martijn

Risposte:


26

Durante il periodo di traffico intenso il tuo server dovrebbe essere in grado di gestire tutte le richieste fatte dai visitatori del tuo sito web. Ma ci sono alcuni limiti nelle connessioni simultanee gestite dal server. Quindi è meglio soddisfare le richieste della pagina il più velocemente possibile.

Ecco alcuni suggerimenti da considerare in queste situazioni,

Miglioramenti a livello di applicazione:

1. Ridurre al minimo le richieste HTTP per accelerare i tempi di caricamento della pagina.

a) Combina tutti i file JS insieme in un singolo file JS combinato e tutti i file CSS in un singolo file CSS combinato.

b) Minimizza i file JS e CSS, quindi le dimensioni del file saranno ridotte e verranno scaricate più velocemente.

c) Usa CSS Sprites - Quando combini la maggior parte o tutte le tue immagini in uno sprite, trasformi più richieste di immagini in una sola. Quindi basta usare la proprietà CSS dell'immagine di sfondo per visualizzare la sezione dell'immagine di cui hai bisogno.

d) Ritardare il download delle immagini con caricamento lento, ciò sarà utile per ridurre le richieste http.

2. Prepara pagine leggere che prevedono più visite:

a) Escludere elementi decorativi come immagini o Flash ove possibile; usa il testo anziché le immagini nella navigazione del sito e in chrome e inserisci la maggior parte del contenuto in HTML.

b) utilizzare pagine HTML statiche anziché dinamiche; questi ultimi caricano di più sui tuoi server. È inoltre possibile memorizzare nella cache l'output statico delle pagine dinamiche per ridurre il carico del server.


Miglioramenti a livello di server:

1. Ridurre i valori di timeout del server consultando il provider di hosting (non dovrebbe essere troppo basso).

Quando i timeout sono più bassi, la connessione verrà presto rilasciata, quindi il server sarà in grado di gestire più connessioni.

2. Utilizzare servizi di terze parti come CloudFlare per la memorizzazione nella cache di dati statici e per proteggere il sito Web da utenti malintenzionati e attacchi come DDOS.

3. Aggiorna l'hardware del tuo server - Aggiorna le memorie fisiche e virtuali, aumenta i limiti dei processi di I / O e di ingresso, se necessario. Il tuo provider di hosting sarà in grado di aiutarti meglio.

4. Codice dinamico cache : utilizzare APC per memorizzare nella cache il codice operativo PHP.

5. Bilanciamento del carico : distribuire il carico su più server di bilanciamento del carico.


  • Quando vengono intraprese tutte le azioni necessarie, ora è il momento di verificare se il sito Web è pronto per un enorme picco di traffico.

    Esistono alcuni servizi di terze parti come loadimpact.com che forniscono test di carico con traffico simulato. L'analisi ti aiuterà a capire quanto carico può gestire il tuo sito Web e cosa può essere migliorato.

  • Inoltre, durante il periodo di picco del traffico, evitare operazioni di utilizzo elevato della CPU come cronjobs di backup di siti Web ecc.


3
Queste sono tutte cose relative al sito ed eccellenti! Ma a meno che tu non abbia ricevuto 200.000 richieste contemporaneamente sul tuo server, questo potrebbe non essere sufficiente. Come un precedente host web, mi piaceva mettere su una cache hardware di grandi dimensioni ed eseguire il sito caricando la cache. Vorrei anche replicare il sito su più server anche se sono condivisi e implementare il bilanciamento del carico utilizzando un proxy o un firewall. Di solito era abbastanza. Molte persone non si rendono conto che il collo di bottiglia più grande è in realtà I / O HD. Anche aumentare la memoria e utilizzarla per la cache di Apache e MySQL aiuta davvero.
closetnoc,

2
sei il benvenuto per migliorare la risposta! :)
Nikhil Supekar il

1
Mi piace la tua risposta! Ho votato a favore. Per favore, non essere offeso. Volevo solo sottolineare alcune cose dal punto di vista degli host web. Solo un commento Non uno schianto. Ancora una volta, la tua risposta è eccellente !! Suggerisco spesso di contattare l'host perché queste cose si presentano di volta in volta e ci sono opzioni che l'host può fare che potrebbero aiutare e non costare nulla. Molti host sono felici per l'attenzione! Per me è stato un processo semplice poiché l'hardware era già in atto. Non mi ci sarebbe voluto molto tempo per preparare il sito per un simile evento. ;-) Grazie per l'invito.
closetnoc,

1
Nessuna offesa. In realtà potremmo davvero sfruttare la tua esperienza con l'hardware del server.
Nikhil Supekar,

1
Sono stato ritirato dal settore da oltre un decennio, ad eccezione della ricerca di reti fiduciarie. L'unica cosa che mi piace è il potenziamento della cache per Apache e MySQL o applicazioni simili per ridurre inchiodare il sottosistema I / O. L'ho fatto qui e può davvero funzionare. Metto anche in guardia da troppa memoria sui sistemi, ad esempio dal backing store . la manutenzione dei file di scambio (et al.) può aumentare radicalmente le richieste I / O che tendono ad essere più lente. C'è un punto debole, ma non so più cosa sia quel punto debole. Ho il sospetto che tu sia molto più esperto di me. ;-)
closetnoc,

7

Prima di tutto, consiglierei Cloudflare. È possibile creare un account di base gratuito e instraderà il traffico tramite data center locali per ridurre al minimo la quantità di hop del server. Cloudflare è ottimo anche per la memorizzazione nella cache dei contenuti e ha la protezione DDOS.

Oltre a ciò, prova a tagliare il grasso dal tuo livello di servizio. Assicurarsi di non avere query di database eccessivamente gonfiate che strozzano il codice o qualsiasi logica intensiva della CPU che potrebbe essere semplificata.

Prova anche a memorizzare nella cache tutte le query del database. Alcune grandi opzioni per la memorizzazione nella cache delle query sono Redis o Memcache. OpCaching è un'altra considerazione se si utilizza un linguaggio non compilato.

Ma probabilmente la cosa più importante è mantenere il contenuto statico (ad es. Css, js e immagini) il più ottimizzato possibile. Minimizza tutto il tuo Javascript, combinali tutti in un unico file, se possibile. Ricorda che ogni file incluso nel tuo sito deve effettuare diversi salti del server per raggiungere l'utente finale.

Non sottovalutare la larghezza di banda e il tempo di caricamento che puoi risparmiare anche comprimendo le immagini!

Infine, considera il monitoraggio delle prestazioni con strumenti come New Relic.

Buona fortuna!!

Fonte: uno degli sviluppatori del 12 ° sito più popolare nel Regno Unito secondo Alexa.


5

Prendi in considerazione il test di carico del tuo sito. Sono disponibili strumenti gratuiti come JMeter , The Grinder e Gatling , che possono simulare un gran numero di visitatori del tuo sito.

Testando in anticipo l'impatto del traffico intenso, è possibile determinare se qualsiasi ottimizzazione effettuata è stata efficace e, in caso contrario, esaminare ulteriori ottimizzazioni.


3

Se sei su 1and1, probabilmente stai cercando un hosting economico. Hosting economico significa che tendi a fare tutto in una sola scatola. Un grave punto critico per l'hosting è che quando si ospita tutto nella stessa casella, si dividono le risorse in parti importanti del sito:

  • Il tuo server web (Apache, Nginx, ecc.)
  • Il tuo database (MySQL, PostGreSQL, ecc.)

Ed essendo 1 e 1 c'è una buona probabilità che tu stia utilizzando un pannello di controllo come Plesk o cPanel, il che significa che hai un ulteriore livello di cose in competizione per le risorse. E l'ultimo chiodo nella tua bara? Non hai molte risorse. Hai forse 1 CPU (o una CPU virtuale) e pochissima RAM (se hai più di 2 GB rimarrò sorpreso).

Quando abbiamo abbandonato 1and1 siamo andati con un provider di hosting scalabile (Amazon Web Services nel nostro caso) e abbiamo fatto diverse cose che prima non potevamo

  1. Amazon ha le sue istanze per i database (RDS) e quindi il nostro database ha risorse da respirare. La maggior parte dei sistemi RDBMS vive e respira su RAM ed era qualcosa di cui potevamo ottenere in abbondanza. Ora è possibile eseguire il provisioning degli SSD anche con I / O elevati, rendendo meno doloroso l'altro punto di choke del DB (scrittura dei dati).
  2. Abbiamo ottenuto un bilanciamento del carico con 2 server Web. Con un potente backend DB non avevamo bisogno di front-end di fascia alta, quindi abbiamo ottenuto due server di fascia bassa.
  3. Siamo passati a qualcosa che potrebbe portare su richiesta macchine completamente configurate. Usando qualcosa come Chef o Puppet, puoi facilmente aggiungere nuovi server Web ed è trasparente al 100% per gli utenti finali se fatto bene. AWS ha anche Opsworks in modo da poter creare i tuoi script direttamente in AWS.
  4. Modifica le dimensioni dell'istanza su richiesta. Questo è un pezzo chiave per noi. Se il DB si impantana, posso abbatterlo e riavviarlo come più grande in un paio di minuti. Sì, comporterebbe tempi di inattività, ma alcuni minuti di inattività sono migliori delle ore di un sito orribilmente lento. Totalmente spaventato dai tempi di inattività? Mantieni una replica di lettura dietro le quinte, quindi abbassa quella, passa a un'istanza più grande, promuovi a master e eviti qualsiasi tempo morto per il costo di una macchina aggiuntiva.

AWS non è l'unico gioco in città (Azure, Rackspace, ecc.) Ma assicurati che 1and1 possa adattarsi alle tue esigenze.


1

Verificare con il proprio ISP e vedere se c'è un limite sulla larghezza di banda. Aggiorna il tuo piano di hosting se la larghezza di banda non è sufficiente per la quantità di traffico che ti aspetti. Non vuoi mostrare un messaggio "Limite di larghezza di banda superato" ai tuoi visitatori.


1

Dalla mia esperienza personale, ho saputo che anche il miglior VPS ha i suoi limiti. Sto andando vero laico è qui.

Uno dei nostri siti Web sportivi è stato ospitato su un VPS. Durante una partita tra Pakistan e India, abbiamo ricevuto oltre 70.000 colpi. Avevamo un VPS Inmotinghosting con 4 GB di RAM e elaborazione a 2. GHz, larghezza di banda di 1 TB, memoria SSD e altre cose fantasiose che si presentano. Abbiamo attivato anche una versione a pagamento di Cloudflare.

Era solo a metà della partita e il sito web è andato in rovina. Non è mai venuto dal vivo durante la partita e abbiamo perso potenzialmente più di 70.000 visitatori in più. Fu più tardi che sapemmo che la nostra larghezza di banda era consumata e senza l'host di origine che non funzionava, la CDN è il più delle volte inutile.

Lezione: Oltre a ottenere un VPS e sintonizzarsi su un CND come Cloudflare, ridurre al minimo le dimensioni della pagina. Meno è, meglio è. È possibile utilizzare la memorizzazione nella cache delle pagine e la minimizzazione del codice che risulta molto utile nella gestione del traffico.


1

Non hai definito "tutto in una volta" molto bene. Diciamo che stai guardando 200.000 visitatori unici in mezz'ora. Sono 111 richieste al secondo, senza tenere conto dei visitatori che fanno clic e aprono più pagine (che vuoi, giusto?).

La prima cosa che vorrei fare sono le storie di Google di persone che gestiscono quantità simili di traffico. Molte persone scriveranno delle loro esperienze sui loro blog per aiutare gli altri. Noterai che è estremamente difficile trovare una storia su qualcuno che lo fa sull'hosting condiviso, e c'è una ragione per questo. Cerca soluzioni come Digital Ocean o Amazon Web Services, per cominciare, utilizzando il data center più vicino al tuo pubblico. E sono d'accordo che scaricare tutte le tue risorse statiche su CloudFlare, anche un account gratuito, è un'ottima idea.

A parte questo, prova il tuo codice aggiungendo script di temporizzazione nella parte superiore e inferiore delle tue pagine, supponendo che siano dinamici. Supponendo che la mia ipotesi sui numeri sia corretta, dovrai essere in grado di servire ogni pagina in meno di 10 millisecondi per mantenere qualsiasi tipo di prestazione accettabile. Se stai servendo tutte le richieste tramite SSL per impostazione predefinita, disabilitalo per un paio di giorni mentre passa la tempesta.

Inoltre, 200.000 suoni molto spaventosi, ma tieni presente che non devi essere troppo spaventato (anche se dovresti essere, un po '). Ad esempio, quando la rivista Paper ha pubblicato le foto NSFW di Kim Kardashian, ci sono voluti solo quattro server Web di medie dimensioni e Amazon ELB per gestire il carico, secondo questo articolo (SFW). Sicuramente non penso che la tua configurazione attuale lo gestirà, ma non dovresti avere esattamente bisogno di sedici server Web con 48 core ciascuno alimentato dal loro piccolo generatore nucleare.


1

Conoscere questa domanda vecchia, ma molto buona e vorrei avere buone informazioni sull'argomento qualche anno fa ...

Di tanto in tanto abbiamo siti (relativi alle attività scolastiche) presenti sulle reti televisive. Dato che operiamo con un budget molto limitato, il "bilanciamento del carico" è la soluzione. Al giorno d'oggi le scatole VPS possono essere acquistate in modo piuttosto economico e abbiamo solo mirrorato / duplicato i nostri contenuti su 2-3 di esse.

Leggi questo articolo e leggi "round-robin".

Ulteriori informazioni sui test di carico sono disponibili qui .

Quando abbiamo iniziato a provare a gestire i picchi, avevamo semplicemente il nostro contenuto su scatole da 2-3 VPS e collocato il loro NS nelle impostazioni del registrar.


0

La cosa migliore è avere server dedicati con multi cluster in grado di risolvere il tuo problema


0

Buona fortuna a riscrivere il tuo sito Web, cambiare provider e migrare i contenuti su una rete CDN in meno di una settimana.

Come avrai capito dalle altre risposte, queste sono le cose minime che devi fare per preparare il tuo sito a un forte aumento del traffico. Anche se attualmente stai utilizzando 1and1.co.uk, probabilmente non hai un forte team di ingegneri di rete, DBA, programmatori e ottimizzatori front-end che lavorano per te.

Non è probabile che accada, vero?

Non hai detto cosa fai con il tuo sito Web, se esegue il carrello o se potrebbe essere implementato con contenuti statici. In quest'ultimo caso, potresti sopravvivere allo tsunami se scarichi l'intero sito in file statici e li pubblichi al posto del sito normale (esegui prima il backup della versione corrente).

Dovresti anche parlare con 1and1 (con la tua carta di credito in mano).

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.