Cómo optimizar a Nginx para manejar las solicitudes de 100+K por minuto

Cómo optimizar a Nginx para manejar las solicitudes de 100+K por minuto

Hace unos días recibí una tarea para configurar el servidor web NGNIX que puede manejar 100k solicitudes por minuto. Para completar esta tarea, tomo un sistema Ubuntu con 4 CPU y 8 GB de memoria e inicio de configuración como a continuación.

1. Instale el servidor web Nginx

Estos son pasos opcionales si no tiene NGINX instalado en su sistema.

Instalar en Ubuntu/ Debian/ LinuxMint

$ sudo apt-get install nginx 

Instalar en Centos / Rhel / Fedora

# yum install nginx 

2. Tane el archivo de configuración de Nginx

Ahora edite la configuración de Nginx /etc/nginx/nginx.confusión y hacer un cambio en los siguientes valores. En la configuración a continuación, solo se muestran los parámetros cambiados.

trabajador_procesos 8; # no de CPU * 2 Worker_rlimit_nofile 50000; eventos trabajador_connections 20000;  http sendFile on; tcp_nopush on; tcp_nodelay on; KeepAlive_Requests 100; #keepalive_timeout 65; Open_file_cache max = 100; Gzip fuera; access_log apagado; types_hash_max_size 2048;  

3. Reiniciar Nginx y la carga de prueba

Después de hacer todos los cambios anteriores, solo reinicie el servicio Nginx usando el siguiente comando.

# Servicio Nginx reiniciar 

Ahora use la herramienta de referencia Apache para probar la carga. He subido un archivo en un servidor de 50kb y lo golpea por 100k veces.

# AB -N 100000 -C 500 http: // 11.22.33.44/mypage.html 
 Esto es apachebench, versión 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http: // www.zeustech.NET/Licencia a Apache Software Foundation, http: // www.apache.org/ benchmarking 11.22.33.44 (ser paciente) completado 10000 solicitudes completadas de 20000 solicitudes completadas de 30000 solicitudes completadas 40000 solicitudes completadas 50000 solicitudes completadas 60000 solicitudes completadas 70000 solicitudes completadas 80000 Solicitudes completadas 90000 Solicitudes completadas 100000 solicitudes terminadas 100000 Solicitudes Software del servidor: Nginx/1.4.Nombre de host del servidor 6: 11.22.33.44 Puerto del servidor: 80 Ruta del documento: /myPage.HTML Longitud del documento: 53339 Bytes Nivel de concurrencia: 500 Tiempo Tomado para las pruebas: 43.570 segundos Solicitudes completas: 100000 Solicitudes fallidas: 0 Total Transferido: 5358300000 bytes HTML transferido: 53333900000 Solicitudes de bytes por segundo: 2295.18 [#/sec] (media) Tiempo por solicitud: 217.848 [MS] (media) Tiempo por solicitud: 0.436 [MS] (media, en todas las solicitudes concurrentes) Tasa de transferencia: 120100.12 [kbytes/seg] Recibidos tiempos de conexión (MS) MIN Media [+/- SD] MEDIAN MAX CONNECT: 4 84 275.9 18 7027 Procesamiento: 39 132 124.1 90 3738 esperando: 7 21 22.5 18 1598 Total: 50 216 308.0 109 7208 Porcentaje de las solicitudes atendidas dentro de un cierto tiempo (MS) 50% 109 66% 127 75% 158 80% 180 90% 373 95% 1088 98% 1140 99% 1333 100% 7208 (solicitud más larga) 

Según la salida anterior, puede ver que para 100k solicitudes se sirvieron en 43.570 segundos de Nginx.