Modificar los parámetros del kernel Linux para mejorar el rendimiento del servidor concurrente Nginx

  

Cuando Linux Nginx alcanzó un alto número de concurrentes, sockets TCP TIME_WAIT menudo alcanzó el número dos, treinta mil para que el servidor puede ser fácilmente arrastrado muertos. De hecho, podemos simplemente modificando los parámetros del núcleo de Linux, se puede reducir el número de sockets de servidor Nginx TIME_WAIT, lo que aumenta el rendimiento del servidor Nginx concurrencia. vi /etc/sysctl.conf agregue las siguientes líneas: net.ipv4.tcp_fin_timeout = 30 = 1200 net.ipv4.tcp_keepalive_time

net.ipv4.tcp_syncookies = 1 = 1 net.ipv4.tcp_tw_reuse net.ipv4. tcp_tw_recycle = 1 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_max_syn_backlog = 8192 = 5000 net.ipv4.tcp_max_tw_buckets Breve descripción: net.ipv4.tcp_syncookies = 1 indicarán en SYN cookies. Cuando se produce el desbordamiento de la cola SYN, está habilitado para procesar las galletas, una pequeña cantidad puede prevenir ataques SYN, por defecto en cero desactiva; net.ipv4.tcp_tw_reuse = 1 indica en su reutilización. tomas de tiempo de espera permiten re-utilizados para la nueva conexión TCP, el valor predeterminado es cero desactiva; net.ipv4.tcp_tw_recycle = 1 representa la rápida recuperación de las tomas de tiempo de espera de conexión TCP abiertas, el valor predeterminado es 0, apagado. Net.ipv4.tcp_fin_timeout = 30 significa que si el extremo local solicita que se cierre el socket, este parámetro determina cuándo permanecerá en el estado FIN-WAIT-2. Net.ipv4.tcp_keepalive_time = 1200 Indica la frecuencia con la que TCP envía mensajes de keepalive cuando keepalive está habilitado. El valor predeterminado es 2 horas y se cambia a 20 minutos. Net.ipv4.ip_local_port_range = 1024 65000 Indica el rango de puertos utilizados para las conexiones salientes. Por defecto es muy pequeño: 32768 a 61000, cambiado a 1024 a 65000. net.ipv4.tcp_max_syn_backlog = 8192 indica la longitud de la cola SYN, el valor predeterminado es 1024, el aumento de la longitud de la cola es 8,192, el número de conexiones de red puede acomodar más de espera para una conexión. net.ipv4.tcp_max_tw_buckets = 5000 indica que el sistema mientras se mantiene el número máximo de sockets TIME_WAIT, si hay más de este número, zócalos TIME_WAIT se borrarán inmediatamente e imprimir un mensaje de advertencia. El valor predeterminado es 180000, que se cambia a 5000. Para Apache, Nginx y otros servidores, los parámetros de las últimas líneas pueden reducir el número de sockets TIME_WAIT, pero para Squid, el efecto no es excelente. Este parámetro controla el número máximo de sockets TIME_WAIT, lo que evita que el servidor Squid sea arrastrado por un gran número de sockets TIME_WAIT. Echo " ====================== ejecutan los siguientes comandos para validar la configuración: ================== ======= " #Cambie los parámetros del kernel de Linux, ¡el comando surte efecto inmediatamente! /sbin /sysctl -p Optimización de Nginx Use FastCGI Cache fastcgi_cache TEST para habilitar la caché de FastCGI y darle un nombre. Personalmente, sentir que abrir la memoria caché es muy útil, puede reducir efectivamente la carga de la CPU y evitar errores 502. niveles fastcgi_cache_path /usr /local /nginx /fastcgi_cache = 1: 2 keys_zone = TEST: 10m inactivo = 5m; Este comando especifica un FastCGI nivel de la estructura de directorio de caché camino, región clave tiempo de almacenamiento y un tiempo inactivo eliminación

otra descripción

Nginx por Igor Sysoev de Rusia visitó la segunda desarrollo Rambler.ru sitio, que ha estado funcionando el sitio durante más de dos años y medio. Igor publica el código fuente como una licencia BSD de clase.

En el caso de conexiones concurrentes altas, Nginx es una buena alternativa al servidor Apache. Nginx también se puede utilizar como un servidor de equilibrio de carga de 7 capas. De acuerdo con los resultados de mi prueba, Nginx 0.6.31 + PHP 5.2.6 (FastCGI) puede soportar más de 30,000 conexiones concurrentes, lo que equivale a 10 veces la de Apache en el mismo entorno.

En mi experiencia, el servidor Apache + 4 GB de RAM (modo prefork) por lo general sólo puede manejar 3.000 conexiones simultáneas, porque van a ocupar más de 3 GB de memoria, tiene 1 GB de memoria reservada para el sistema. He tenido dos servidores Apache porque MaxClients configuración en el archivo de configuración en 4000, cuando Apache conexiones simultáneas llegan a 3800, lo que resulta en la memoria del servidor y espacio de intercambio con un colapso total.

Y esto + PHP 5.2.6 servidor Nginx 0.6.31 (FastCGI) a 30.000 conexiones simultáneas, proceso abierto 10 Nginx consume memoria 150 millones (15M * 10 = 150 millones), abrió 64 El proceso php-cgi consume 1280M de memoria (20M * 64 = 1280M), más la memoria consumida por el propio sistema, que consume menos de 2GB de memoria. Si la memoria del servidor es pequeña, solo puede abrir 25 procesos php-cgi, por lo que la memoria total consumida por php-cgi es de solo 500M.

Copyright © Conocimiento de Windows All Rights Reserved