En los últimos dos días, construí un conjunto de servidores Apache. Cada servidor tiene 4G de memoria y usa el modo prefork. La cantidad de conexiones establecidas al principio fue muy pequeña y tomó mucho tiempo responder a las solicitudes de los usuarios. , Modifiqué el archivo de configuración httpd.conf de Apache 2.0.59:
Cita
# MPM prehorquilla
# StartServers: número de procesos del servidor para iniciar
# MinSpareServers: número mínimo de procesos del servidor que se mantienen libres
# MaxSpareServers: número máximo de procesos de servidor que se mantienen libres
# MaxClients: número máximo de procesos del servidor permitidos para iniciarse
# MaxRequestsPerChild: número máximo de solicitudes que atiende un proceso de servidor
InicioServidores 10
MinSpareServers 10
MaxSpareServers 15
Límite de servidor 2000
MaxClientes 2000
Solicitudes máximas por niño 10000
Verifique la cantidad de procesos httpd (es decir, la cantidad de solicitudes simultáneas que Apache puede manejar en modo prefork):
Comando de Linux:
Ejemplo de resultado de devolución:
1388
Indica que Apache puede manejar 1388 solicitudes simultáneas. Apache puede ajustar este valor automáticamente de acuerdo con la carga. El valor máximo de cada servidor de mi grupo ha alcanzado 2002.
Verifique la cantidad de solicitudes simultáneas de Apache y el estado de su conexión TCP:
Comando de Linux:
Cita
netstat -n | awk '/^tcp/ {++S[$NF]} FIN {para(a en S) imprimir a, S[a]}'
(Esta afirmación proviene de Lo obtuve del Sr. Wang, director técnico del Departamento de Negocios de la Comunidad Interactiva de Sina, lo cual es muy bueno)
Ejemplo de resultado de devolución:
ÚLTIMO_ACK 5
SYN_RECV 30
ESTABLECIDO 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIEMPO_ESPERA 1057
SYN_RECV indica la cantidad de solicitudes que están esperando ser procesadas; ESTABLISHED indica el estado normal de transmisión de datos; TIME_WAIT indica la cantidad de solicitudes que se han procesado y están esperando que finalice el tiempo de espera.
Con respecto a los cambios en el estado de TCP, se puede ver claramente en la siguiente figura:
ESTADO: DESCRIPCIÓN CERRADO: No hay conexión activa o en progreso ESCUCHA: El servidor está esperando llamadas entrantes SYN_RECV: Ha llegado una solicitud de conexión, esperando confirmación SYN_SENT: La aplicación se ha iniciado, abriendo una conexión ESTABLECIDO: Estado normal de transferencia de datos FIN_WAIT1: La aplicación dice que está completada FIN_WAIT2: la otra parte acordó liberar ITMED_WAIT: esperar a que todos los paquetes mueran CLOSING: ambas partes intentan cerrar al mismo tiempo TIME_WAIT: la otra parte ha inicializado una liberación LAST_ACK: esperar a que todos los paquetes mueran