es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Acumulación de la cola del búfer de envío TCP, aunque la cola del búfer del receptor es 0.

Para una conexión TCP entre un servidor/emisor y un cliente/receptor, actualmente nos enfrentamos a una acumulación de colas en el búfer de envío. Esto ocurre específicamente en cargas pesadas, mientras que el receptor funciona correctamente. Aunque el tamaño de la cola del emisor sigue aumentando, la cola de búfer de recepción del receptor se mantiene en 0, es decir, el receptor sigue leyendo pero los datos se retrasan. Cabe destacar que estamos utilizando sockets TCP no bloqueantes.
Los tamaños de las colas se obtienen del comando netstat -nap.

Anteriormente, cuando el búfer TCP se llenaba por completo, intentamos aumentar el tamaño del búfer TCP utilizando setsockopt, y se resolvió el problema de llenar por completo el búfer, pero el retraso sigue presente.

Cualquier sugerencia que pueda acercarme a la resolución sería apreciada, gracias.

Edit: Recientemente descubrimos que estamos utilizando TCP_NODELAY setsockopt en el emisor.

Intentaré crear un ejemplo mínimo viable.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Analizando el problema de conexiones TCP con acumulación en la cola del buffer

    Como experto en IT especializado en C++, Linux y TCP, te has encontrado con un problema en una conexión TCP entre un servidor/emisor y un cliente/receptor. Parece que la cola del buffer de envío se acumula durante cargas pesadas, mientras que el receptor funciona correctamente, incluso aunque la cola del buffer de recepción TCP del receptor se mantiene en 0. Este retraso ocurre a pesar de que el tamaño de la cola del emisor sigue aumentando. Cabe destacar que se están utilizando sockets TCP no bloqueantes y los tamaños de las colas se obtienen del comando netstat -nap.

    Para abordar el problema de un buffer TCP completamente lleno, el equipo ya intentó aumentar el tamaño del buffer TCP usando setsockopt. Si bien esto resolvió el problema de un buffer completamente lleno, el retraso aún persiste.

    Recientemente, el equipo descubrió que se está utilizando setsockopt TCP_NODELAY en el emisor. Como próximo paso, planeas crear un ejemplo mínimo viable para verificar si ajustar la configuración de setsockopt TCP_NODELAY puede mejorar la situación.

    Cualquier sugerencia adicional que pueda ayudar a resolver este problema será muy apreciada.

Comments are closed.