Red de conocimiento informático - Conocimiento del nombre de dominio - Hola, el servidor Linux Nginx de mi foro es un poco lento. ¿Hay alguna forma de optimizarlo?

Hola, el servidor Linux Nginx de mi foro es un poco lento. ¿Hay alguna forma de optimizarlo?

1. Optimización del proceso de compilación e instalación

1. Reducir el tamaño del archivo compilado de Nginx

Al compilar Nginx, se utiliza el modo de depuración predeterminado, y mucho en el modo de depuración. Se insertará información de seguimiento y ASSERT. Una vez completada la compilación, un Nginx tendrá varios megabytes

segmentos. Debe cancelar el modo de depuración de Nginx antes de la compilación. Después de la compilación, Nginx tiene solo unos cientos de KB, por lo que puede modificar el código fuente relevante para cancelar el modo de depuración antes de la compilación. El método específico es el siguiente:

Después de descomprimir el archivo fuente de Nginx, busque Busque las siguientes líneas en el archivo auto/cc/gcc en el directorio del código fuente. Algunas líneas:

# debug CFLAGS="$CFLAGS -g"

Comente o elimine estas dos líneas para cancelar el modo de depuración.

2. Especifique la optimización de compilación del tipo de CPU para una CPU específica.

Al compilar Nginx, el parámetro de compilación predeterminado de GCC es "-O". Para optimizar la compilación de GCC, puede usar el. siguientes dos parámetros:

--with-cc-opt='-O3'

--with-cpu-opt=CPU #Compilar para una CPU específica, valores válidos incluyen: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64

Para determinar el tipo de CPU, puede utilizar el siguiente comando:

[root @localhost home]#cat /proc/ cpuinfo | grep "nombre del modelo"

II Utilice TCMalloc para optimizar el rendimiento de Nginx

El nombre completo de TCMalloc es caché de subprocesos

Malloc es una herramienta de código abierto desarrollada por Google "google -Miembro de "perftools". En comparación con la biblioteca malloc estándar glibc, la biblioteca TCMalloc es más eficiente y más rápida en la asignación de memoria

, lo que puede mejorar en gran medida el rendimiento del servidor en situaciones de alta concurrencia, reduciendo así la carga del sistema. A continuación se presenta brevemente cómo agregar compatibilidad con la biblioteca TCMalloc

en Nginx.

Para instalar la biblioteca TCMalloc, necesita instalar libunwind (no necesario para sistemas operativos de 32 bits) y el paquete google-perftools.

Estas bibliotecas proporcionan funcionalidad básica de cadena de llamadas de funciones y registro de llamadas de funciones para programas basados ​​en CPU y sistemas operativos de 64 bits. A continuación se presenta el proceso de operación específico de usar TCMalloc para optimizar Nginx:

1. Instale la biblioteca libunwind

Puede descargar la versión correspondiente de google-perftools desde aquí, es decir, google-. perftools-1.8.tar.

gz, el proceso de instalación es el siguiente:

[root@localhost@localhost@localhost@localhost@localhost]#tar zxvf google-perftools-1.8.tar.gz [root@localhost home]#cd google -perftools- 1.8/ [root@localhost google- perftools-1.8]# ./configure [root@localhost google-perftools-1.8]#make & & make install [root@localhost google-perftools-1.8]#echo "/usr /local/ lib" & gt; /etc/ld.so.conf.d/usr_local_lib.conf [root@localhost google-perftools-1.8]# ldconfig

En este punto, la instalación de google- Se completa perftools.

3. Recompilar Nginx

Para que Nginx sea compatible con google-perftools, debe agregar la opción "-with-google_perftools_module" durante el proceso de instalación para volver a compilar Nginx. Vuelva a compilar el código de instalación de Nginx de la siguiente manera:

[root@localhostnginx-0.7.65]#./configure \ >--with-google_perftools_module--with-.ipv4.tcp_max_tw_buckets=6000net.ipv4.ip_local_port_range = 1024 65000 neto .ipv4.net.core.netdev_max_backlog = 262144 net.ipv4.tcp_max_orphans = 262144 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_fin_timeout = 1 neto. ipv4.tcp_keepalive_time = 30

Agregue el valor del parámetro del kernel anterior al archivo /etc/sysctl.conf y luego ejecute el siguiente comando para hacerlo efectivo:

[root@ localhost home] #/sbin/ sysctl -p

El siguiente es el significado de cada opción en el ejemplo: El parámetro net.ipv4.tcp_max_tw_buckets se utiliza para establecer el número de relojes del cronógrafo. es 180.000, aquí está establecido en 6.000. La opción net.ipv4.ip_local_port_range se utiliza para establecer el rango de puertos que el sistema permite abrir. La opción net.ipv4.tcp_tw_recycle se utiliza para permitir un bucle rápido de tiempos de espera. La opción net.ipv4.tcp_tw_reuse se utiliza para habilitar la reutilización, lo que permite reutilizar los sockets TIME-WAIT para nuevas conexiones TCP. La opción net.ipv4.tcp_syncookies se utiliza para configurar las cookies SYN para que las cookies puedan procesarse cuando la cola de espera SYN se desborde. El valor predeterminado de la opción net.core.somaxconn es 128, que se utiliza para ajustar la cantidad de conexiones TCP simultáneas iniciadas por el sistema.

En el caso de solicitudes muy simultáneas, el valor predeterminado puede provocar que el enlace se agote o se retransmita, por lo que debe ajustarse junto con la cantidad de solicitudes simultáneas. La opción net.core.netdev_max_backlog representa la cantidad máxima de paquetes que se permite enviar a la cola cuando cada interfaz de red recibe paquetes más rápido de lo que el kernel puede procesarlos. La opción net.ipv4.tcp_max_orphans establece el número máximo de sockets TCP en el sistema que no están asociados con ningún identificador de archivo de usuario. Si excede las

palabras, la conexión de aislamiento se restablecerá inmediatamente y se imprimirá un mensaje de advertencia. Esta restricción sólo tiene como objetivo evitar ataques DoS simples. No se debe confiar demasiado en este límite ni reducirlo artificialmente, sino que se debe aumentar con frecuencia. La opción net.ipv4.tcp_max_syn_backlog se utiliza para rastrear la cantidad máxima de solicitudes de conexión que aún no han recibido confirmación del cliente. El valor predeterminado para este parámetro es 1024 para sistemas con 128 MB de memoria y 128 para sistemas con memoria más pequeña. El valor del parámetro net.ipv4.tcp_synack_retries determina la cantidad de paquetes SYN+ACK que envía el kernel antes de abandonar la conexión. La opción net.ipv4.tcp_syn_retries indica la cantidad de paquetes SYN enviados antes de que el kernel deje de establecer la conexión. La opción net.ipv4.tcp_fin_timeout determina cuánto tiempo permanece el socket en el estado FIN-WAIT-2. El valor predeterminado es 60 segundos. Es importante establecer este valor correctamente; a veces, incluso los servidores web con poca carga corren el riesgo de sufrir un desbordamiento de memoria debido a una gran cantidad de sockets inactivos. La opción net.ipv4.tcp_keepalive_time indica con qué frecuencia TCP envía información de keepalive después de habilitar keepalive. El valor predeterminado es 2 (horas).