Uma resposta para qualquer pessoa aqui no Google:
O Sendfile está bloqueando e não permite que o nginx defina lookahead, portanto, é muito ineficiente se um arquivo for lido apenas uma vez.
OSendfile depende do armazenamento em cache do sistema de arquivos, etc 'e nunca foi feito para arquivos tão grandes.
O que você quer é desabilitar o sendfile para arquivos grandes, e usar o directio (de preferência com threads para que ele não seja bloqueado). Quaisquer arquivos com menos de 16 MB ainda serão lidos usando sendfile.
aio threads;
directio 16M;
output_buffers 2 1M;
sendfile on;
sendfile_max_chunk 512k;
Ao usar directio, você lê diretamente do disco, pulando vários passos no caminho.
p.s. Por favor, note que para usar tópicos aio você precisa compilar nginx com tópicos suporte link