O que é a diretiva worker_aio_requests no Nginx?

1

Supondo que estou usando uma distribuição Linux moderna como o Ubuntu 14.04 e assumindo que estou usando a chamada de sistema epoll (), o que faz o worker_aio_requests?

Os documentos dizem:

If you are using aio with the epoll connection processing method, this directive sets the maximum number of outstanding asynchronous I/O operations for a single worker process.

Quando li isso pela primeira vez, achei que significava que, para um determinado processo de trabalho, quando uma conexão chega, durante o tempo de vida da conexão, ele verifica se está pronto para leitura ou gravação, e se não, ele o coloca no fila de eventos. Processo de trabalho continua aceitando conexões. Quando essa conexão específica está pronta para leitura ou gravação, o kernel notifica com a chamada do sistema e o trabalhador manipula os dados. Portanto, essa diretriz se referiria ao número de operações de E / S autorizadas permitidas na fila de eventos.

Mas não acho que seja isso, porque acho que é isso que a diretiva worker_connections do Event Module faz. Então estou confuso com o que worker_aio_requests e worker_connections fazem?

    
por Donato 16.10.2016 / 02:01

1 resposta

0

Imagine o envio de centenas de imagens em uma página por meio de uma conexão http persistente. Um cliente conectado ao trabalhador, mas faz muitos I / Os. Seria bom não bloquear essas leituras para que o trabalhador não tenha que esperar.

O artigo do IBM developerWorks sobre AIO possui um bom esboço de async vs. blocking.

Nesse caso, o nginx usa pelo menos duas interfaces para E / S, o epoll () para aceitar a conexão e o AIO para coisas como servir arquivos. Existem diferenças de implementação para escutar muitos descritores de arquivos versus fazer fila de E / S para alguns outros descritores de arquivos.

Lendo ngx_epoll_module.c, worker_aio_requests é alimentado para a chamada do sistema io_setup (). Isso resulta na configuração anunciada de muitas operações assíncronas por trabalhador.

Normalmente, um usa libaio para isso, embora nginx pareça ignorar isso e usar a chamada do sistema. Essa diferença na interface e algumas outras peculiaridades resultaram em várias diretivas de configuração expostas, para que você possa ajustar as conexões de trabalho e as E / Ss simultâneas.

    
por 17.10.2016 / 01:39

Tags