Como reduzir o IO wait ao servir grandes arquivos estáticos no NGINX?

1

Eu estou querendo saber como configurar o NGINX para servidores de arquivos estáticos grandes (1-4 GB) sem matar a espera de E / S de disco causada pela leitura simultânea. Como os servidores de arquivos conseguem isso?

    
por Michael Rogers 14.10.2018 / 20:07

3 respostas

2

Para mim, readahead mudou tudo. wa (iowait) passou de 30% para 0. Carga Média de 4,00 a 0,04 Apenas aumentando-o de 256 para 4096 com este comando:

blockdev --setra 4096 /dev/sda3

História de sucesso: link

Tutorial: link

    
por 16.10.2018 / 21:50
2

Estes são ajudá-lo a reduzir a E / S no disco:

  1. Ative o sendfile no NGINX.
  2. Use o VFS File System para sua partição.
  3. Ajuste output_buffers no NGINX.
  4. Desativar directio no NGINX.
por 14.10.2018 / 20:21
1
O

iowait não é necessariamente ruim, contanto que você esteja obtendo o desempenho esperado (tempo de resposta, taxa de transferência) fora do sistema. Pode ser reduzido:

  • Mais RAM para uma melhor taxa de acertos no cache do sistema de arquivos.
  • Sistema de armazenamento mais rápido.

No Linux, considere E / S assíncrona com threads para solicitações grandes e buffered / O para os menores. O AIO não é para todos, pois atingirá o armazenamento com muitas solicitações paralelas e nenhum buffer do sistema de arquivos. Mas pode permitir que os trabalhos dos trabalhadores continuem enquanto as E / Ss ainda estão em andamento.

sendfile       on;
aio            threads;
directio       8m;
    
por 15.10.2018 / 15:19

Tags