Artigo Diretório
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

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 4Ou configure-o diretamente paraauto.
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
Abra o arquivo de configuração do Nginx: Normalmente, o arquivo de configuração principal do Nginx está localizado em
/etc/nginx/nginx.conf.Set
worker_processes: Encontrado no arquivo de configuraçãoeventsblocos, configuraçõesworker_processesvalor. se nãoeventsbloco, 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.
使用 top 或 htop 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_processes 和 worker_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!
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) compartilhou "O que devo fazer se a carga da CPU do servidor Nginx e o uso de memória do processo forem altos?" 》, útil para você.
Bem-vindo a compartilhar o link deste artigo:https://www.chenweiliang.com/cwl-32093.html
Para descobrir mais truques ocultos🔑, seja bem-vindo ao nosso canal do Telegram!
Compartilhe e curta se você gostou! Seus compartilhamentos e curtidas são nossa motivação contínua!