2009-06-16 7 views
6

Sono curioso di sapere come si avvicinano tutti alla domanda della seguente natura:Come valutare l'hardware necessario per supportare il numero X di utenti/transazioni?

'è necessario creare l'Applicazione A (ad esempio il sito di e-commerce). Utilizzerà la tecnologia B (ad esempio java). Deve supportare il numero C (ad esempio 200) di utenti concorrenti. Che tipo di hardware abbiamo bisogno? '

Le specifiche hardware comportano il numero di CPU necessario e forse la quantità di memoria per una risposta di base.

Per semplificare il mio esempio, rimarrò con la tecnologia Java nella mia domanda, ma mi piacerebbe davvero un consiglio neutro dal punto di vista tecnologico.

Capisco che una domanda del genere coinvolge molti fattori aggiuntivi. Ad esempio, un diverso framework (Wicket vs Struts vs Spring vs EJB pura architettura J2EE), numero di livelli distribuiti (una configurazione di casella o 3 livelli di installazione).

Ma dato che una persona potrebbe non avere alcuna esperienza precedente con la tecnologia data (o forse nessuna opportunità di fare un test di carico per scoprire quale sia l'hardware richiesto), e una tale domanda emerge sempre durante una discussione iniziale del progetto (e una risposta è essenziale come linea di base per andare avanti), come si fa a dare una risposta?

Avevo pensato di risolvere il problema richiesto dalla memoria stimando la quantità di memoria che ogni sessione utente poteva assumere, ma ci sarà sicuramente un sovraccarico di framework/virtual machine.

Ma in generale, non riesco a trovare una buona soluzione a questa domanda, che sembra sempre apparire. Un test di carico sicuramente aiuterà a risolverlo, ma a quel punto il progetto è già pronto, e questa è una domanda a cui un cliente di solito vorrebbe una risposta prima di impegnarsi in un progetto.

Spero che la comunità possa fornire consigli su un buon approccio a questo.

Grazie.

risposta

3

Devi davvero fare alcune supposizioni sulla tua esperienza utente per fare una stima iniziale non caricata del carico di utenti concorrenti. Inizia con alcune ipotesi sulla sessione di un utente. ipotesi ballpark decente potrebbe essere (puo 'non tenere in funzione della complessità o la semplicità del vostro sito):

  • Ogni utente colpisce una nuova pagina o una risorsa ogni 5 secondi (assumendo AJAXy)
  • Ogni richiesta prende una media di 200ms da elaborare.
  • In genere è consigliabile avere un utilizzo medio del 25% della capacità per consentire picchi, ancora di più per i siti di social network in cui i picchi potrebbero essere più grandi.

Poi si direbbe:

200 utenti (200ms/5s) => 8 CPU fabbisogno medio * 4 (per il 25% del carico) => 32 CPU.

Non penso che questo sia particolarmente incentrato sulla lingua. La memoria non è costosa, ha abbastanza.

1

Personalmente, penso che chiunque vi dica che c'è una soluzione generale a questo problema vi sta mentendo. Questo è particolarmente vero se sono un fornitore di hardware.

È possibile solo effettuare stime come questa in base a carichi simili al carico previsto. In seguito imparerai che ti sei sbagliato perché il vero carico non è molto simile al carico "simile" che hai usato come stima.

Speriamo che imparerai da questo e faremo una stima migliore la prossima volta.

1

Onestamente, non ho visto un buon modo per ottenere una stima ragionevole in mancanza di un test di carico del campione. Ci sono semplicemente troppe variabili in un'applicazione di dimensioni apprezzabili: hardware (architettura della memoria, numero di CPU, architettura del disco), software (dettagli di implementazione, sistema operativo, macchina virtuale [se presente], sistema di database, ecc. Ecc.), Ambientale (rete, raffreddamento) e altri.

Questa è fondamentalmente un'applicazione speciale di test delle prestazioni. Le persone più saggi sull'argomento hanno dichiarato ripetutamente e chiaramente che è necessario ottenere i numeri. Quindi il miglior consiglio che posso dare è mettere nel piano la necessità di lavorare prototipi il prima possibile in modo che tu possa ottenere quei numeri e il piano affinché quei numeri cambino nel tempo così ottenere prototipi o versioni funzionanti ad ogni checkpoint per ripetere il test lungo tutta la cronologia del progetto.

Le tue stime iniziali avranno probabilmente poca somiglianza con i tuoi numeri finali, ma almeno sarai in grado di correggere se necessario nei momenti critici invece di arrivare alla fine per rendersi conto che non è rimasto del tempo nella pianificazione delle correzioni.

0

Si sta chiedendo come dimensionare quantitativamente i requisiti hardware.

Io, tuttavia, l'approccio da un'altra prospettiva. Progetta la tua app in modo che possa scalare (per qualsiasi livello). Da qui, distribuire l'iterazione n. 1 del tuo hardware. Pubblica qualche beta pubblica su questo. Colleziona alcuni numeri di vita reale. E riconfigurare il sistema per soddisfare una metrica di prestazioni più elevate. Ripetere.

0

L'hardware richiesto è regolato più dalla complessità e dalla qualità del software molto più che dal numero di utenti o dal carico della transazione. Le uniche persone che affermano il contrario sono i fornitori di hardware.

Problemi correlati