O que devo fazer se o servidor Nginx tiver alta carga de CPU e uso de memória de processo?

De repente, você descobriu no trabalho que o uso da CPU do Nginx disparou? Para piorar a situação, os vários processos de trabalho do Nginx estão consumindo recursos loucamente toda vez que olho para os processos.

Ao ver essa cena, sua cabeça esquenta e você não consegue evitar de gritar: “Meu Deus, o servidor vai explodir, não se preocupe, isso não significa que seu servidor vai ficar “acabado”?” , mas Nginx Precisamos que você faça uma otimização abrangente!

Análise das causas da carga excessiva do Nginx

O que devo fazer se o servidor Nginx tiver alta carga de CPU e uso de memória de processo?

Primeiro, temos que descobrir,Por que o Nginx fica “exausto” de repente?Os motivos do problema são muitos, não tenha medo, vamos descobrir juntos a seguir.

1. Configuração irracional

No arquivo de configuração do Nginx, o ponto mais importante é worker_processes. Este parâmetro determina o número de processos iniciados pelo Nginx.

  • Se você configurar poucos processos de trabalho, a carga da CPU aumentará; se você configurar muitos, haverá memória insuficiente.
  • Você tem que encontrar um ponto de equilíbrio, por exemplo,Defina work_processes como 1 a 2 vezes o número de núcleos de CPU.
  • Se você tiver 4 núcleos, tente worker_processes 4 Ou configure-o diretamente para auto.

2. Aumento de visitas

Às vezes, a carga do Nginx aumenta repentinamente, não porque você cometeu um erro, mas porque o número de visitas é muito alto.Solicitações de acesso altamente simultâneas farão com que o processo de trabalho do Nginx fique sobrecarregado., todos os processos ficam sobrecarregados e a CPU e a memória também ficam cheias. Neste momento, pode ser necessário melhorar os recursos do servidor, como aumentar o número de núcleos da CPU ou aumentar a memória. Claro, isso também é um lembrete: não se esqueça de considerar o descarregamento ou balanceamento de carga do CDN.

3. Ataques maliciosos encontrados

Ser “muito popular” na Internet nem sempre é bom. Ataques maliciosos podem atingir você a qualquer momento. Se você achar que o uso da CPU está anormalmente alto e a origem do IP da solicitação for suspeita, é muito provável que seu site esteja sofrendo um ataque DDoS. Neste momento,Você precisa implantar um firewall ou limitar a frequência de acesso imediatamente, como usar o módulo de limitação de corrente que vem com o Nginx ou configurar uma lista negra de IP.

Como resolver o problema de alto uso de memória do processo Nginx?

Portanto, a questão é: por que o processo de trabalho do Nginx consome tantos recursos? Temos que começar com a configuração e otimizá-la passo a passo.

Método de configuração

  1. Abra o arquivo de configuração do Nginx: Normalmente, o arquivo de configuração principal do Nginx está localizado em /etc/nginx/nginx.conf.

  2. Set worker_processes: Encontrado no arquivo de configuração events blocos, configurações worker_processes valor. se não events bloco, você precisa criar um.

    nginx
    events {
    worker_connections 1024;
    use epoll;  # 或者适用于操作系统的其他事件模型
    }

1. Definir corretamente work_connections

nginx worker_connections O parâmetro determina o número máximo de conexões que cada processo de trabalho pode manipular. Se for muito pequeno, afetará o desempenho da simultaneidade; se for muito grande, poderá consumir muitos recursos.

Como calcular o valor apropriado?

Supondo que você tenha uma CPU de 4 núcleos e 16 GB de RAM, um ponto de partida seguro é worker_connections 4096.

Mas se o seu site tiver muito tráfego, considere aumentar esse valor para 8192 para garantir que cada processo possa lidar com solicitações suficientes.

events {
    worker_connections 8192;
}

Desta forma, o poder de processamento do Nginx será bastante melhorado.

2. Ajustar keepalive_timeout

Outro parâmetro chave para o Nginx lidar com solicitações é keepalive_timeout.

Esta configuração determina por quanto tempo a conexão do cliente com o servidor pode ser mantida.

Se definido por muito tempo, ocupará muitos recursos de conexão..

Você pode tentar keepalive_timeout Defina como 15 segundos para manter a conexão e liberar recursos.

keepalive_timeout 15;

3. Otimize os limites do descritor de arquivo

por padrão,Linux O sistema possui um limite no número de descritores de arquivos que podem ser abertos por cada processo.

Se o Nginx precisar processar um grande número de arquivos (como recursos estáticos), você poderá ver um erro do Nginx, solicitando "too many open files"

você pode passar worker_rlimit_nofile Aumentar o limite do descritor de arquivo, por exemplo, definido como 65535.

worker_rlimit_nofile 65535;

4. Ativar cache e gzip

Cache e compactação são duas chaves para a otimização do desempenho do site.

Ao ativar a função de cache do Nginx, recursos estáticos (como imagens e arquivos JS) podem ser armazenados em cache na memória, reduzindo bastante a carga no servidor.

Além disso, ativar a função de compactação gzip pode reduzir a quantidade de dados transmitidos e melhorar a velocidade do site.

gzip on;
gzip_types text/plain application/javascript;

5. Analise o uso de recursos Nginx

Finalmente, se você concluiu todas as otimizações acima, mas o Nginx ainda ocupa muita CPU, pode ser necessário usar algumas ferramentas para uma análise aprofundada.

使用 tophtop Visualize o consumo de recursos em tempo real de um processo,passar strace Rastreie chamadas do sistema ou use nmon Gere relatórios de desempenho. Somente analisando de forma abrangente a operação real do Nginx podemos realizar um ajuste mais preciso.

总结

Não entre em pânico quando o uso da CPU do Nginx aumentar. Pode ser causado apenas por configuração inadequada ou tráfego excessivo.

através de ajustes razoáveis worker_processesworker_connectionsAo habilitar o cache, otimizar os tempos limite e os descritores de arquivos, você pode reduzir significativamente a pressão de carga no Nginx.

Nginx é um poderoso servidor web que, quando devidamente otimizado, pode fornecer excelente desempenho para o seu site.

Lembre-se, qualquer dúvida pode ser respondida porCiênciamétodos para resolvê-lo, otimizar o desempenho do servidor não é exceção.

Monitore e ajuste em tempo hábil, é a chave para manter o Nginx funcionando com eficiência. Se você dominar essas técnicas, seu site estará seguro mesmo diante de alto tráfego ou ataques maliciosos.

Espero que este artigo tenha inspirado você, corra e otimize seu Nginx!

发表 评论

Seu endereço de e-mail não será publicado. 必填 项 已 用 * 标注

Voltar ao Topo