La risposta breve è: nessuno può rispondere a questa domanda tranne te.
La lunga risposta è che il benchmarking del carico di lavoro specifico è qualcosa che devi intraprendere, perché è un po 'come chiedere "Quanto è lungo un pezzo di stringa?".
Un semplice sito Web statico di una pagina potrebbe essere ospitato su un Pentium Pro 150 e pubblicare ogni giorno migliaia di impressioni.
L'approccio di base che devi seguire per rispondere a questa domanda è provarlo e vedere cosa succede. Ci sono molti strumenti che puoi usare per mettere artificialmente il tuo sistema sotto pressione per vedere dove si piega.
Una breve panoramica di ciò è:
- Metti il tuo scenario al suo posto
- Aggiungi monitoraggio
- Aggiungi traffico
- Valuta i risultati
- Correggere in base ai risultati
- Risciacquare, ripetere fino a quando non sarà abbastanza felice
Metti il tuo scenario al suo posto
Fondamentalmente, al fine di testare un certo carico, è necessario qualcosa su cui testare. Configurare un ambiente per testare. Se possibile, dovrebbe essere un'ipotesi abbastanza ravvicinata dell'hardware di produzione, altrimenti rimarrai estrapolato dai tuoi dati.
Configura server, account, siti Web, larghezza di banda, ecc. Anche se lo fai su VM, va bene solo se sei pronto a ridimensionare i risultati.
Quindi, installerò una macchina virtuale di media potenza (due core, 512 MB di RAM, 4 GB di HDD) e installerò il mio bilanciamento del carico preferito, haproxy
all'interno di Red Hat Linux sulla VM.
Avrò anche due server Web dietro il bilanciamento del carico che userò per eseguire lo stress test del bilanciamento del carico. Questi due server Web sono impostati in modo identico ai miei sistemi live.
Aggiungi monitoraggio
Avrai bisogno di alcune metriche da monitorare, quindi misurerò quante richieste arrivano ai miei server Web e quante richieste riesco a comprimere al secondo prima che gli utenti inizino a ottenere un tempo di risposta di oltre due secondi.
Monitorerò anche l'utilizzo della RAM, della CPU e del disco sull'istanza haproxy
per assicurarmi che il bilanciamento del carico sia in grado di gestire le connessioni.
Come farlo dipende molto dalle tue piattaforme ed è al di fuori dell'ambito di questa risposta. Potrebbe essere necessario rivedere i file di registro del server Web, avviare i contatori delle prestazioni o fare affidamento sulla capacità di reporting del proprio strumento di stress test.
Alcune cose che vuoi sempre monitorare:
- uso della CPU
- Utilizzo della RAM
- Uso del disco
- Latenza del disco
- Utilizzo della rete
Puoi anche scegliere di guardare deadlock SQL, tempi di ricerca, ecc a seconda di ciò che stai testando.
Aggiungi traffico
Qui è dove le cose si divertono. Ora devi simulare un carico di prova. Ci sono molti strumenti che possono farlo, con opzioni configurabili:
Scegli un numero, qualsiasi numero. Supponiamo che vedrai come il sistema risponde con 10.000 hit al minuto. Non importa quale numero scegli perché ripeterai questo passaggio molte volte, regolando quel numero su o giù per vedere come risponde il sistema.
Idealmente, è necessario distribuire queste 10.000 richieste su più client / nodi di test del carico in modo che un singolo client non diventi un collo di bottiglia delle richieste. Ad esempio, il test remoto di JMeter fornisce un'interfaccia centrale da cui avviare diversi client da una macchina Jmeter di controllo.
Premi il pulsante magico Vai e guarda i tuoi server web sciogliersi e schiantarsi.
Valuta i risultati
Quindi, ora devi tornare alle tue metriche raccolte nel passaggio 2. Vedi che con 10.000 connessioni simultanee, la tua haproxy
scatola sta a malapena sudando, ma il tempo di risposta con due server Web è un tocco di oltre cinque secondi. Non è bello - ricorda, il tuo tempo di risposta punta a due secondi. Quindi, dobbiamo apportare alcune modifiche.
Rimediare
Ora devi accelerare il tuo sito Web di oltre due volte. Quindi sai che devi scalare o ridimensionare.
Per scalare, ottenere server Web più grandi, più RAM, dischi più veloci.
Per ridimensionare, ottenere più server.
Usa le tue metriche dal passaggio 2 e i test per prendere questa decisione. Ad esempio, se durante il test la latenza del disco è stata enorme, sai che devi ridimensionare e ottenere dischi rigidi più veloci.
Se durante il test il processore era al 100%, forse è necessario ridimensionare per aggiungere server Web aggiuntivi per ridurre la pressione sui server esistenti.
Non esiste una risposta generica giusta o sbagliata, c'è solo ciò che è giusto per te. Prova a ridimensionare e, se non funziona, ridimensiona invece. O no, dipende da te e da alcuni pensare fuori dagli schemi.
Diciamo che ridimensioneremo. Decido quindi di clonare i miei due server Web (sono macchine virtuali) e ora ho quattro server Web.
Risciacqua, ripeti
Ricominciare dal passaggio 3. Se scopri che le cose non vanno come previsto (ad esempio, abbiamo raddoppiato i server Web, ma i tempi di risposta sono ancora più di due secondi), quindi cerca altri colli di bottiglia. Ad esempio, hai raddoppiato i server Web, ma hai ancora un server di database scadente. Oppure, hai clonato più macchine virtuali, ma poiché si trovano sullo stesso host fisico, hai ottenuto solo una maggiore contesa per le risorse del server.
È quindi possibile utilizzare questa procedura per testare altre parti del sistema. Invece di colpire il bilanciamento del carico, prova a colpire direttamente il web server o il server SQL utilizzando uno strumento di benchmarking SQL .