elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Duda con metodo .listen() de NodeJS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda con metodo .listen() de NodeJS  (Leído 3,190 veces)
Ali Baba


Desconectado Desconectado

Mensajes: 310


Ver Perfil WWW
Duda con metodo .listen() de NodeJS
« en: 7 Abril 2020, 20:28 pm »

Hola a todos. Mirando un poco la documentación de NodeJS, en el módulo http, existe un método llamado .listen(), este pasa varios parámetros, entre ellos el host y el port, que me queda clarísimo para que son, y también un callback. Pero he visto que antes del callback se pasan algunos otros parámetros más que no estoy muy claro para que son. Hay uno en particular que me llamó la atención y fue el backlog. Supuse que el backlog tiene que ver con http, pero no estoy muy seguro de que es y no se si estoy buscando bien en Internet. Se que a este parámetro se la pasa un número y en la documentación solo me dice lo siguiente: Common parameter of server.listen() functions. Y la verdad es que eso no me está diciendo mucho.


En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Duda con metodo .listen() de NodeJS
« Respuesta #1 en: 7 Abril 2020, 23:21 pm »

Hola a todos. Mirando un poco la documentación de NodeJS, en el módulo http, existe un método llamado .listen(), este pasa varios parámetros, entre ellos el host y el port, que me queda clarísimo para que son, y también un callback. Pero he visto que antes del callback se pasan algunos otros parámetros más que no estoy muy claro para que son. Hay uno en particular que me llamó la atención y fue el backlog. Supuse que el backlog tiene que ver con http, pero no estoy muy seguro de que es y no se si estoy buscando bien en Internet. Se que a este parámetro se la pasa un número y en la documentación solo me dice lo siguiente: Common parameter of server.listen() functions. Y la verdad es que eso no me está diciendo mucho.

La documentación dice esto:

Citar
All listen() methods can take a backlog parameter to specify the maximum length of the queue of pending connections. The actual length will be determined by the OS through sysctl settings such as tcp_max_syn_backlog and somaxconn on Linux. The default value of this parameter is 511 (not 512).

Que se traduce a "Especifica la longitud de la cola de conexiones pendientes."


En línea

Ali Baba


Desconectado Desconectado

Mensajes: 310


Ver Perfil WWW
Re: Duda con metodo .listen() de NodeJS
« Respuesta #2 en: 7 Abril 2020, 23:57 pm »

La documentación dice esto:

Que se traduce a "Especifica la longitud de la cola de conexiones pendientes."

Muchas gracias. Ahora comprendo un poco más. No se si hay un límite, aunque buscando hace un rato vi que el valor por defecto es 1024 para sistemas que tienen alrededor de 128MB en memoria. Ahora bien ¿Con ese parámetro puedo aumentar ese tamaño en caso de que el servidor lo requiera? Y otra pregunta ¿Existen casos donde hay que incrementar el tamaño?
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Duda con metodo .listen() de NodeJS
« Respuesta #3 en: 8 Abril 2020, 02:11 am »

Muchas gracias. Ahora comprendo un poco más. No se si hay un límite, aunque buscando hace un rato vi que el valor por defecto es 1024 para sistemas que tienen alrededor de 128MB en memoria. Ahora bien ¿Con ese parámetro puedo aumentar ese tamaño en caso de que el servidor lo requiera? Y otra pregunta ¿Existen casos donde hay que incrementar el tamaño?

El limite del backlog está dado por /proc/sys/net/core/somaxconn. El limite es 4096 desde el kernel 5.4, 128 en kernels anteriores. /proc/sys/net/ipv4/tcp_max_syn_backlog es un parametro que controla el limite de conexiones entrantes que todavía no son establecidas (creo que de manera global, no por aplicación). Y este si tiene valores por defecto dependiendo de la cantidad de memoria. Su valor por defecto es 256, 128 para equipos con menos de 32MB de RAM y 1024 para equipos que tienen más de 128MB de RAM.

Hasta donde yo tengo entendido, estas son conexiones que son consideradas aceptadas (ACK) pero todavía no han pasado a control de la aplicación. No debería afectarte mucho porque si la cola de las conexiones que son consideradas aceptadas llega a su limite, el servidor simplemente ignora los paquetes (ACK) que convierten las conexiones pendientes en establecidas y al cabo de un tiempo envía otra vez (SYN/ACK) al cliente. Si la cola sigue llena se vuelve a repetir el proceso, el cliente envia ACK, el servidor lo ignora y al cabo de un tiempo vuelve a enviar SYN/ACK. Y así sigue hasta que el servidor se cansa y le dice al cliente que se vaya para otro lado.

En mi opinión, la unica razón por la cual tendrías que modificar el backlog es si tienes un servidor que no procesa las conexiones rapidamente. Ya sea en condiciones normales de tráfico o dependiendo de los picos que tengas.

Y en ese caso, quizás apunta más a que deberías buscar una forma de distribuir la carga através de varios servidores.

Por cierto, por conexiones pendientes se refieren a conexiones que no han pasado a control de la aplicación (creo que es así) y no es exactamente el estado de la conexión TCP.

Aquí hay un link que lo explica muy bien en mi opinión:

http://veithen.io/2014/01/01/how-tcp-backlog-works-in-linux.html
En línea

Ali Baba


Desconectado Desconectado

Mensajes: 310


Ver Perfil WWW
Re: Duda con metodo .listen() de NodeJS
« Respuesta #4 en: 8 Abril 2020, 03:31 am »

Aquí hay un link que lo explica muy bien en mi opinión:

http://veithen.io/2014/01/01/how-tcp-backlog-works-in-linux.html

Muchísimas gracias caballero.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
convertir listen de winamp
Multimedia
CARRY-ON 0 1,477 Último mensaje 27 Marzo 2007, 20:49 pm
por CARRY-ON
Duda con método available()
Java
novalida 3 8,323 Último mensaje 11 Agosto 2009, 16:42 pm
por 1mpuls0
Llega “Listen with” a Facebook
Noticias
wolfbcn 0 2,163 Último mensaje 15 Enero 2012, 03:06 am
por wolfbcn
Creación de Método de Pago con NodeJS
Desarrollo Web
Ali Baba 3 3,317 Último mensaje 13 Octubre 2016, 21:52 pm
por EFEX
Duda con Uploader y NodeJS
Scripting
DeMoNcRaZy 2 3,794 Último mensaje 30 Septiembre 2021, 20:57 pm
por el-brujo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines