ho raggiunto 80 MB/s di prestazioni "lettura casuale" per disco "reale" (mandrino). Ecco le mie scoperte.
Quindi, in primo luogo, decidere la quantità di traffico necessaria per spingere verso il basso gli utenti e la quantità di spazio di archiviazione necessaria per server.
È possibile saltare i suggerimenti di impostazione del disco indicati di seguito poiché si dispone già di una configurazione RAID5.
Prendiamo un esempio di un server dedicato con larghezza di banda di 1 Gbps con dischi da 3 * 2 TB. Mantieni il primo disco dedicato al sistema operativo e tmp. Per altri 2 dischi è possibile creare un raid software (per me, ha funzionato meglio rispetto al raid hardware on-board). Altrimenti, è necessario dividere i file in modo uguale su dischi indipendenti. L'idea è di mantenere il carico di lettura/scrittura di entrambi i dischi equamente. Il software raid-0 è la migliore opzione.
Nginx Conf Ci sono due modi per raggiungere alto livello di prestazioni utilizzando nginx.
uso directio
aio su;
directio 512; output_buffers 1 8 m;
"Questa opzione richiede di avere una buona quantità di ram" Sono necessari circa 12-16 GB di ram.
userland io
output_buffers 1 2m;
"assicurarsi di aver impostato readahead per 4-6MB per il software RAID montare" blockdev --setra 4096/dev/md0 (o il montaggio del disco indipendente)
Questa impostazione utilizza in modo ottimale cache del file system, e richiede molto meno ram. Sono necessari circa 8 GB di RAM.
Note comuni:
- mantenere "sendfile off;"
si può anche utilizzare la larghezza di banda della valvola a farfalla per consentire 100s di connessioni su banda disponibile. Ogni connessione di download utilizzerà 4 MB di RAM attiva.
limit_rate_after 2m;
limit_rate 100k;
Entrambe suddetta soluzione si adatti facilmente a 1k + utente simultaneo su un server 3 disco. Supponendo di avere una larghezza di banda di 1 Gbps e ogni connessione è limitata a 1Mb/ps Esiste un'ulteriore configurazione necessaria per ottimizzare le scritture su disco senza influire molto sulle letture.
rendere tutti i caricamenti sul disco os principale su un supporto dire/tmpuploads. questo non garantirà disturbi intermittenti mentre si accendono letture pesanti. Quindi sposta il file da/tmpuploads usando il comando "dd" con oflag = direct. qualcosa come
dd if=/tmpuploads/<myfile> of=/raidmount/uploads/<myfile> oflag=direct bs=8196k
Quindi nessun vero :(Avete mai provato a cancellare file di grandi dimensioni su ext2-3 vs XFS vs JFS? Inoltre, uno sguardo al kernel-source sarebbe hai rivelato a voi, che i conducenti diversi fs spendono tempi diversi nelle sezioni critiche, anche essi tendono a comportarsi in modo radicalmente diverso sotto un'alta pressione IO. –
L'eliminazione di un file di grandi dimensioni non era il caso d'uso. Se hai numeri, mostrali. Rimango fermo in quello che ho scritto. –
numeri? "ci sono bugie, maledette bugie e poi benchmark" Devo ancora vedere un benchmark senza alcun obiettivo di marketing. Stavo parlando della mia esperienza e della fonte del kernel linux pubblicamente disponibile. Il punto che "dubito vedrete differenze misurabili" è tuttavia ridicolo. –