La configuración net.core.somaxconn
a valores más altos solo es necesaria en servidores con alta carga donde la nueva velocidad de conexión es tan alta / explosiva que tener 128 (50% más en BSD: 128 backlog
+ 64 half-open
) conexiones aún no aceptadas se considera normal. O cuando necesita delegar la definición de "normal" a las propias aplicaciones.
Algunos administradores usan alta net.core.somaxconn
para ocultar problemas con sus servicios, por lo que desde el punto de vista del usuario el proceso se verá como un pico de latencia en lugar de una conexión interrumpida / tiempo de espera (controlado por net.ipv4.tcp_abort_on_overflow
Linux).
listen(2)
el manual dice: net.core.somaxconn
actúa solo el límite superior para una aplicación que es libre de elegir algo más pequeño (generalmente configurado en la configuración de la aplicación). Aunque algunas aplicaciones solo lo usan, lo listen(fd, -1)
que significa establecer el trabajo acumulado en el valor máximo permitido por el sistema.
La causa real es una baja tasa de procesamiento (por ejemplo, un servidor de bloqueo de un solo subproceso) o un número insuficiente de subprocesos / procesos de trabajo (por ejemplo, software de bloqueo multiproceso / subproceso como apache
/ tomcat
)
PD. A veces es preferible fallar rápidamente y dejar que el equilibrador de carga haga su trabajo (reintentar) que hacer que el usuario espere; para ese propósito, establecemos net.core.somaxconn
cualquier valor y limitamos la acumulación de aplicaciones a, por ejemplo, 10
y net.ipv4.tcp_abort_on_overflow
a 1.
PPS Las versiones antiguas del kernel de Linux tienen un error desagradable de truncar el somaxcon
valor en sus 16 bits más bajos (es decir, convertir el valor en uint16_t
), por lo que elevar ese valor a más de lo que 65535
puede ser peligroso. Para obtener más información, consulte: http://patchwork.ozlabs.org/patch/255460/
Si desea obtener más detalles sobre todas las partes internas de la cartera de pedidos en Linux, no dude en leer:
Cómo funciona la cartera de TCP en Linux .