Como otimizar o Nginx para lidar com solicitações de 100+K por minuto

Como otimizar o Nginx para lidar com solicitações de 100+K por minuto

Alguns dias atrás, recebi uma tarefa para configurar o NGNIX Web Server, que pode lidar com solicitações de 100k por minuto. Para concluir esta tarefa, tomo um sistema Ubuntu com 4 CPU e 8 GB de memória e inicie a configuração como abaixo.

1. Instale o Nginx Web Server

São etapas opcionais se você não instalou o Nginx no seu sistema.

Instale no Ubuntu/ Debian/ Linuxmint

$ sudo apt-get install nginx 

Instale no CentOS / Rhel / Fedora

# yum install nginx 

2. Tune Nginx Configuration Argh

Agora edite a configuração do nginx /etc/nginx/nginx.conf e fazer mudanças nos seguintes valores. Na configuração abaixo, apenas os parâmetros alterados estão mostrando.

trabalhador_processos 8; # não de CPU * 2 trabalhador_rlimit_nofile 50000; Eventos trabalhador_connections 20000;  http sendfile on; tcp_nopush ligado; TCP_NODELAY ON; Keepalive_Requests 100; #keepalive_timeout 65; open_file_cache max = 100; gzip off; access_log off; types_hash_max_size 2048;  

3. Reinicie o nginx e a carga de teste

Depois de fazer todas as alterações acima, basta reiniciar o serviço Nginx usando o seguinte comando.

# serviço nginx reiniciar 

Agora use a ferramenta Apache Benchmark para testar carga. Eu carreguei um arquivo no servidor de 50kb e o acerte por 100k vezes.

# AB -N 100000 -C 500 http: // 11.22.33.44/mypage.html 
 Este é o Apachebench, versão 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http: // www.Zeustech.Net/licenciado para a Apache Software Foundation, http: // www.apache.org/ benchmarking 11.22.33.44 (BE PACIENTE) Concluído 10000 solicitações preenchidas 20000 solicitações preenchidas 30000 solicitações preenchidas 40000 solicitações preenchidas 50000 solicitações concluídas 60000 solicitações concluídas 70000 solicitações preenchidas 80000 solicitações concluídas 90000 solicitações concluídas 100000 solicitações Concluídas 100000 Solicitações Software: Nginx/1.4.6 Nome do host do servidor: 11.22.33.44 Porta do servidor: 80 Caminho do documento: /MyPage.HTML Documento Comprimento: 53339 Bytes Nível de simultaneidade: 500 tempo necessário para testes: 43.570 segundos solicitações completas: 100000 Solicitações falhas: 0 Total transferido: 5358300000 bytes html transferidos: 5333900000 Solicitações de bytes por segundo: 2295.18 [#/s] (média) tempo por solicitação: 217.848 [ms] (média) tempo por solicitação: 0.436 [MS] (média, em todas as solicitações simultâneas) Taxa de transferência: 120100.12 [Kbytes/s] Recebeu tempos de conexão (ms) min média [+/- sd] mediana max Connect: 4 84 275.9 18 7027 Processamento: 39 132 124.1 90 3738 Esperando: 7 21 22.5 18 1598 Total: 50 216 308.0 109 7208 Porcentagem dos pedidos atendidos dentro de um determinado tempo (ms) 50% 109 66% 127 75% 158 80% 180 90% 373 95% 1088 98% 1140 99% 1333 100% 7208 (solicitação mais longa) 

De acordo com a saída acima, você pode ver que, para 100 mil solicitações, foram servidos em 43.570 segundos por nginx.