Tengo una aplicación java en Linux que abre el socket UDP y espera mensajes.¿Cómo controlar el espacio disponible del búfer UDP de Linux?
Después de un par de horas bajo mucha carga, hay una pérdida de paquetes, es decir, los paquetes son recibidos por kernel pero no por mi aplicación (vemos los paquetes perdidos en sniffer, vemos paquetes UDP perdidos en netstat, no lo hacemos) t ver esos paquetes en nuestros registros de la aplicación).
Intentamos ampliar los buffers de socket, pero esto no ayudó, comenzamos a perder paquetes más tarde que antes, pero eso es todo.
Para la depuración, quiero saber cuán lleno está el buffer OS udp, en cualquier momento dado. Busqué en Google, pero no encontré nada. ¿Me puedes ayudar?
P.S. Chicos, soy consciente de que UDP no es confiable. Sin embargo, mi computadora recibe todos los mensajes UDP, mientras que mi aplicación no puede consumir algunos de ellos. Quiero optimizar mi aplicación al máximo, ese es el motivo de la pregunta. Gracias.
Gracias por la rx_queue, para el resto - ver la actualización) –
@Juliano ¿Quién dice que puede elegir el protocolo que utilizará? Tal vez está implementando un protocolo basado en udp para servir a los clientes existentes. – steffen
El póster quiere saber sobre la supervisión de las estadísticas de UDP, no las opiniones sobre qué protocolo usar. Al identificar primero en qué parte de las capas se está produciendo la pérdida, se puede trabajar en una solución. – RickS