tuning java linux sockets tcp netty

java - tuning - netty http



¿Cómo establecer la opción de socket(TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL) en java o netty? (2)

En C / Linux, es fácil establecer un valor diferente sobre las opciones de socket para cada conexión tcp KEEPALIVE de forma independiente .

TCP_KEEPCNT (desde Linux 2.4) El número máximo de sondeos keepalive que TCP debe enviar antes de desconectar la conexión. Esta opción no debe usarse en código destinado a ser portátil.

TCP_KEEPIDLE (desde Linux 2.4) El tiempo (en segundos) que la conexión debe permanecer inactiva antes de que TCP comience a enviar sondeos keepalive, si la opción de socket SO_KEEPALIVE se ha establecido en este socket. Esta opción no debe usarse en código destinado a ser portátil.

TCP_KEEPINTVL (desde Linux 2.4) El tiempo (en segundos) entre las sondas keepalive individuales. Esta opción no debe usarse en código destinado a ser portátil.

En netty o java, ¿cómo configurar las tres opciones de socket para socket? Sé que no hay una forma portátil de resolverlo, pero solo en Linux, ¿puedo establecer esas opciones de socket?


El enlace proporcionado en realidad no le dice cómo usar JNA para implementarlo. Después de haber pasado un tiempo investigando SO para encontrar soluciones, escribí mi propia biblioteca. Puedes encontrarlo aquí .


Las versiones recientes de Netty le permiten usar canales de tipo epoll y establecer opciones de socket nativas de Linux, como las que mencionó.

Consulte la documentación de EpollChannelOption para más detalles.