Eu não acho que o seu disco é o problema. Primeiro ncache do nginx usa um armazenamento de disco para cache. Assim, a velocidade do disco será uma causa potencial de problemas, dependendo de quão quente / frio seu conjunto de dados é, no entanto, não vejo razão para você não poder servir 100mb / seg com o hardware que você mencionou - especialmente se você está usando o nginx.
A primeira coisa que eu acho é que seu número de processos de trabalho foi baixo, suas conexões de trabalho foram provavelmente muito baixas, e você provavelmente não teve seu conjunto open_file_cache alto o suficiente. No entanto, nenhuma dessas configurações causaria um alto IO Wait nem um pico como esse. Você diz que está atendendo a < 50k imagens e parece que 1/4 do seu conjunto pode ser facilmente armazenado em buffer pelo sistema operacional. O Nginx certamente não está configurado de maneira ideal.
O Varnish trata o problema de uma maneira um pouco diferente usando RAM em vez de disco para seu cache.
Depende muito do seu conjunto de dados, mas, com base nos dados que você forneceu, não vejo nenhum motivo para o IO do disco ter se espalhado dessa forma. Você verificou o dmesg e os logs para ver se uma de suas unidades encontrou alguns erros de E / S no momento? A única outra coisa que eu posso pensar que poderia ter causado esse pico foi exceder o cache de arquivos do nginx, o que teria feito com que ele tivesse que entrar em um modo FIFO abrindo novos arquivos.
Certifique-se de que seu sistema de arquivos esteja montado com o noatime, o que deve reduzir uma quantidade considerável de writeops da sua carga de trabalho.
Como exemplo de uma máquina que lida regularmente com 800mb / s:
# uptime
11:32:27 up 11 days, 16:31, 1 user, load average: 0.43, 0.85, 0.82
# free
total used free shared buffers cached
Mem: 8180796 7127000 1053796 0 1152 2397336
-/+ buffers/cache: 4728512 3452284
Swap: 8297568 237940 8059628
Quadcore Xeon:
Intel(R) Xeon(R) CPU X3430 @ 2.40GHz
$ ./bw.pl xxx.xxx 2010-09-01 2010-09-30
bw: 174042.60gb
average 543mb/sec, peaks at 810mb/sec
=== START OF INFORMATION SECTION === Model Family: Seagate Barracuda
7200.12 family Device Model: ST3500418AS Serial Number: 6VM89L1N
Firmware Version: CC38 User Capacity:
500,107,862,016 bytes
Linux 2.6.36-rc5 (xxxxxx) 10/04/2010 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
4.33 0.00 2.40 5.94 0.00 87.33
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 109.61 19020.67 337.28 19047438731 337754190
avg-cpu: %user %nice %system %iowait %steal %idle
8.09 0.00 3.40 10.26 0.00 78.25
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 138.52 21199.60 490.02 106210 2455
avg-cpu: %user %nice %system %iowait %steal %idle
3.74 0.00 3.25 9.01 0.00 84.00
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 125.00 21691.20 139.20 108456 696
avg-cpu: %user %nice %system %iowait %steal %idle
4.75 0.00 3.12 14.02 0.00 78.11
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 154.69 19532.14 261.28 97856 1309
avg-cpu: %user %nice %system %iowait %steal %idle
6.81 0.00 3.36 9.48 0.00 80.36
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 112.80 17635.20 309.00 88176 1545
MRTG:
Conjunto de dados:
# du -sh ads
211.0G ads
# ls|wc -l
679075