Di quali considerazioni tecniche deve preoccuparsi un amministratore di sistema/rete quando un sito entra nei siti di social bookmarking/condivisione?

StackOverflow https://stackoverflow.com/questions/62403

  •  09-06-2019
  •  | 
  •  

Domanda

Il motivo per cui lo chiedo è che Stack Overflow è stato Slashdotted, E Reddited.

Innanzitutto, che tipo di effetto ha questo sui server che alimentano un sito web?In secondo luogo, cosa possono fare gli amministratori di sistema per garantire che i loro siti rimangano attivi e funzionanti nel miglior modo possibile?

È stato utile?

Soluzione

Sfortunatamente, se non hai pianificato tutto ciò prima che accada, probabilmente è troppo tardi e i tuoi utenti avranno un'esperienza negativa.

La scalabilità è la tua prima preoccupazione immediata.Potresti iniziare a ricevere più visite al secondo di quante ne ricevevi al mese.La tua prima linea di difesa è una buona programmazione e progettazione.Assicurati di non fare nulla di stupido come ricaricare i dati da un database più volte per richiesta invece di memorizzarli nella cache.Prima che si verifichi il picco, è necessario eseguire alcuni test di carico abbastanza realistici per vedere dove si trovano i colli di bottiglia.

Per un traffico assurdamente elevato, considera la possibilità di convertire alcune pagine dinamiche in pagine statiche.

Anche avere un’architettura server in grado di scalare aiuta.Gli host condivisi generalmente non sono scalabili.Una singola macchina dedicata generalmente non è scalabile.L'utilizzo di qualcosa come EC2 di Amazon per l'hosting può essere d'aiuto, soprattutto se pianifichi un cluster di server dall'inizio (anche se il tuo cluster è un singolo computer).

La tua prossima preoccupazione principale è la sicurezza.All'improvviso diventi un bersaglio molto più grande per i cattivi.Assicurati di avere un buon piano di sicurezza in atto.Questo è qualcosa che dovresti sempre avere, ma diventa più importante con un utilizzo elevato.

Altri suggerimenti

In primo luogo, chiedi se vuoi davvero spendere settimane e migliaia di dollari per pianificare qualcosa che potrebbe anche non accadere e, se accade, dura circa 5 ore.

La soluzione più semplice è avere un buon modo per passare a una pagina che consenta semplicemente la registrazione.Le persone si iscriveranno e potrai inviare loro un'e-mail quando la tempesta sarà passata.

Le soluzioni più elaborate si basano sulla capacità di scalare rapidamente.Questo è in primo luogo un problema software (puoi connetterti a un db su un altro server, puoi eseguire il bilanciamento del carico).In secondo luogo, la tua soluzione di hosting deve supportare una rapida espansione.Mi viene in mente Amazon EC2, o forse slicehost.Con entrambi i servizi puoi facilmente avviare nuove istanze ("Spostiamo il database su un server diverso") ed espandere le tue istanze ("Aggiorniamo il server db a 4 GB di RAM").

Se mantieni tutti i dati nel db (comprese le sessioni), puoi facilmente avere più server front-end.Per il database di solito proverei un singolo server con le massime risorse disponibili, ma solo perché non ho lavorato con la replica del database ed era piuttosto difficile da fare, almeno con mysql.Le cose potrebbero essere migliorate.

Il progettista dell'app deve pensare alla scalabilità verticale (macchine più grandi con più core e prestazioni più elevate) e/o alla scalabilità orizzontale (distribuzione del carico di lavoro su più sistemi).Il responsabile IT deve capire come supportarlo al meglio.La rete è ciò che guardi per primo, perché ovviamente tutto si basa su di essa.A partire dal confine, ciò di solito significa che i bilanciatori del carico di rete e i router ridondanti sono serviti da più provider.Puoi anche consultare servizi e app di memorizzazione nella cache geografica come cachefly.

Vuoi ridurre il più possibile i colli di bottiglia.Si desidera inoltre progettare l'ambiente in modo che possa essere ampliato in base alle esigenze senza molto lavoro.Fai il lavoro di progettazione in anticipo e significherà meno mal di testa quando diventerai schifoso.

Alcune idee (di ciò che ho usato nei progetti passati e attuali):Per aumentare le prestazioni (se necessario) puoi mettere un calamaro con proxy inverso e memorizzazione nella cache davanti al tuo server.Ovviamente funziona solo se non disponi di chiavi di sessione e se le pagine sono in qualche modo statiche (significa:cambiano solo una volta ogni ora circa) e non personalizzati.Con Squid puoi potenziare un CMS gonfio e lento come typo3, ottenendo così le prestazioni di siti statici con la comodità di un CMS.

Puoi esternalizzare file di grandi dimensioni a servizi esterni come Amazon S3, risparmiando la larghezza di banda del tuo server.

E se sei in grado di spendere qualche soldo (a tre cifre al mese), puoi anche utilizzare una rete per la distribuzione di contenuti.In questo modo avrai automaticamente scalabilità, alta disponibilità e basse latenza per i tuoi utenti.Naturalmente, le tue pagine devono essere memorizzabili nella cache, quindi le chiavi di sessione e le pagine personalizzate sono un no.Se progettato con attenzione e pensando ai CDN, puoi almeno memorizzare nella cache ALCUNI contenuti, come foto, video e materiale statico.

Il carico aumenta, come menzionato in altre risposte.

Riceverai anche un afflusso di nuovi utenti/commenti sul blog/voti da parte di persone annoiate che sono realmente interessate solo al vandalismo.Questo è soprattutto un problema per i blog che consentono commenti completamente anonimi, dove verranno inserite cose terribili.La piattaforma del blog potrebbe disporre di filtri antispam sufficienti per bloccarlo, ma spesso è necessario un intervento manuale per ripulire le sciocchezze rimanenti.

Anche una piccola barriera all’ingresso, come richiedere un nome utente o un indirizzo e-mail anche se non viene effettuata alcuna verifica, ridurrà drasticamente il volume degli atti vandalici.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top