Atualmente, você tem carga muito baixa de acordo com a utilização da largura de banda. Há muitos possíveis afunilamentos, para citar alguns:
Relacionado à rede
À medida que o número de conexões aumenta, você pode atingir worker_connections
limite de um processo de trabalho do Nginx. A descrição do racyclist é muito boa, vou adicionar alguns centavos a ele. Na verdade, quanto mais trabalhadores você tiver, mais possibilidades você poderá atingir worker_connections
de um trabalhador em particular. A razão para isso é que o processo mestre do Nginx não pode garantir uma distribuição uniforme das conexões entre os trabalhadores - alguns deles podem processar pedidos mais rapidamente do que outros e, assim, o limite pode ser excedido finalmente.
Meu conselho é usar o menor número possível de funcionários com um grande número de worker_connections
. No entanto, você terá que aumentar o número de trabalhadores se tiver E / S (veja mais adiante). Use o módulo status
do nginx para observar o número de soquetes que ele usa.
Você provavelmente atingirá o limite do sistema operacional (Linux ou FreeBSD) no número de descritores de arquivos abertos por processo. O Nginx usará descritores não apenas para solicitações de entrada, mas também para conexões de saída para backends. Inicialmente, este limite é ajustado para o valor muito baixo (por exemplo, 1024). O Nginx irá reclamar em seu error.log
sobre este evento.
Se você estiver usando iptables
e seu módulo conntrack (Linux), você deve exceder o tamanho da tabela conntrack
. Cuidado com dmesg
ou /var/log/messages
. Aumente este limite conforme necessário.
Algumas ótimas aplicações otimizadas utilizam 100% de largura de banda. Minha aposta é que você deve enfrentar problema (s) anterior (es) antes.
IO relacionado
Na verdade, um trabalhador do Nginx bloqueia o IO. Assim, se seu site estiver veiculando conteúdo estático, você precisará aumentar o número de funcionários do Nginx para contabilizar o bloqueio de E / S. É difícil dar receitas aqui, pois elas variam muito dependendo do número e tamanho dos arquivos, tipo de carga, memória disponível, etc.
Se você estiver fazendo proxy de conexões para algum back-end através do Nginx, deve levar em conta que ele cria arquivos temporários para armazenar a resposta do backend e, no caso de alto tráfego, isso pode resultar em uma carga substancial no sistema de arquivos. Observe as mensagens em error.log
do Nginx e ajuste proxy_buffers
(ou fastcgi_buffers
) de acordo.
Se você tiver algum IO em segundo plano (por exemplo, MySQL), ele afetará também os arquivos estáticos. Preste atenção em IO wait%