Ubuntu Server 10.04.1 x86
Tengo una máquina con un servicio HTTP FCGI detrás de nginx, que atiende muchas solicitudes HTTP pequeñas a muchos clientes diferentes. (Aproximadamente 230 solicitudes por segundo en las horas pico, el tamaño promedio de respuesta con encabezados es de 650 bytes, varios millones de clientes diferentes por día).
Como resultado, tengo muchos sockets, colgando en TIME_WAIT (el gráfico se captura con la configuración de TCP a continuación):
Me gustaría reducir la cantidad de enchufes.
¿Qué puedo hacer además de esto?
$ cat / proc / sys / net / ipv4 / tcp_fin_timeout 1 $ cat / proc / sys / net / ipv4 / tcp_tw_recycle 1 $ cat / proc / sys / net / ipv4 / tcp_tw_reuse 1
Actualización: algunos detalles sobre el diseño del servicio real en la máquina:
cliente ----- TCP-socket -> nginx (proxy inverso del equilibrador de carga) ----- TCP-socket -> nginx (trabajador) --domain-socket -> fcgi-software - socket TCP persistente simple -> Redis - socket TCP-persistente simple -> MySQL (otra máquina)
Probablemente debería cambiar el equilibrador de carga -> la conexión del trabajador a los sockets de dominio también, pero el problema sobre los sockets TIME_WAIT persistiría - planeo agregar un segundo trabajador en una máquina separada pronto. No podrá utilizar sockets de dominio en ese caso.