Stima della commodity hardware per un'applicazione
-
20-09-2019 - |
Domanda
Supponiamo, ho voluto sviluppare sito overflow dello stack. Come faccio a stimare la quantità di hardware di largo consumo necessario per supportare questo sito assumendo 1 milione di richieste al giorno. Ci sono casi di studio che spiega i miglioramenti delle prestazioni possibili in questa situazione?
Lo so I / O collo di bottiglia è il principale collo di bottiglia nella maggior parte dei sistemi. Quali sono le possibili opzioni per migliorare le prestazioni di I / O? Pochi di loro so che sono
- caching
- replica
Soluzione
È possibile migliorare le prestazioni di I / O in diversi modi a seconda di quello che si utilizza per la configurazione di archiviazione:
- Aumentare la dimensione del blocco del filesystem se la vostra applicazione visualizza buona località spaziale nel suo I / O o utilizza file di grandi dimensioni.
- 10 (striping + mirroring) per le prestazioni + ridondanza (guasto del disco di protezione).
- Utilizzare dischi veloci (Prestazioni Wise: SSD> FC> SATA).
- Non immagazzinare carichi di lavoro in diversi momenti della giornata. per esempio. Backup durante la notte, app normale I / O durante il giorno.
- atime aggiornamenti nel vostro file system.
- file NFS cache gestisce alias Haystack (Facebook) , se la memorizzazione dei dati sul server NFS.
- Combina file di piccole dimensioni in pezzi più grandi, alias BigTable , HBase .
- Evitare grosse directory vale a dire un sacco di file nella stessa directory (invece che dividere file tra diverse cartelle in una gerarchia).
- cluster sistema di storage (sì non esattamente hardware di largo consumo).
- Ottimizza / progettare l'applicazione per il disco sequenziale accede quando possibile.
- memcached . :)
Si consiglia di guardare la sezione di StackOverflow Architettura .
Altri suggerimenti
controllare questo pratico strumento:
e un'altra guida di Dell:
http: / /www.dell.com/content/topics/global.aspx/power/en/ps3q01_graham?c=us&l=en&cs=555
se si desidera che la propria comunità StackOverflow-come, è possibile iscriversi con StackExchange .
è possibile leggere alcuni casi di studio qui:
Elevata scalabilità - come Rackspace ora utilizza MapReduce e Hadoop per eseguire query terabyte di dati http://highscalability.com/how- Rackspace-ora-usi-MapReduce-e-Hadoop-query-terabyte-dati
http: //www.gear6 .com / gear6-download? fid = 56 & DLT = case-study & ls = Veoh-case-study
1 milioni di richieste al giorno è 12 / secondo. Overflow dello stack è abbastanza piccolo che si potrebbe (con normalizzazione e trucchi di compressione interessante) adattarlo interamente nella RAM di un 64 GByte Dell PowerEdge 2970. Non sono sicuro di dove il caching e la replica devono svolgere un ruolo.
Se hai un problema pensare abbastanza di normalizzazione, un R900 PowerEdge con 256 GB è disponibile.
Se non ti piace un singolo punto di errore, è possibile collegare un paio di quelle e solo spingere gli aggiornamenti su un socket (preferibilmente su una scheda di rete separata). Anche un carico massimo di 12K / secondo non dovrebbe essere un problema per un sistema di memoria principale.
Il modo migliore per evitare il collo di bottiglia di I / O è quello di non fare di I / O (il più possibile). Ciò significa un'architettura Prevayler-like con operazioni di scrittura in batch (nessun problema di perdere qualche secondo di dati), in pratica un file di log, e per la replica anche loro scrivere ad una presa di corrente.