FreeBSD: ¿Cómo arreglar "ping: sendto: No hay espacio de búfer disponible"?


27

Estoy tratando de hacer ping a un host remoto, pero recibo un error.

# ping 192.168.80.1
PING 192.168.80.1 (192.168.80.1): 56 data bytes
ping: sendto: No buffer space available
ping: sendto: No buffer space available
^C
--- 192.168.80.1 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss

Funciona para otros hosts:

# ping 192.168.16.1
PING 192.168.16.1 (192.168.16.1): 56 data bytes
64 bytes from 192.168.16.1: icmp_seq=0 ttl=254 time=0.442 ms
64 bytes from 192.168.16.1: icmp_seq=1 ttl=254 time=0.402 ms
^C
--- 192.168.16.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.402/0.422/0.442/0.020 ms
#

El mensaje "No hay espacio de búfer disponible" parece indicar algún tipo de error de memoria. Y, de hecho, cuando verifico con Netstat, el número de "clústeres mbuf" parece MUY incorrecto:

# netstat -m
11780 mbufs in use
4294966716/32768 mbuf clusters in use (current/max)
0/3/6656 sfbufs in use (current/peak/max)
1785 KBytes allocated to network
0 requests for sfbufs denied
0 requests for sfbufs delayed
0 requests for I/O initiated by sendfile
0 calls to protocol drain routines

¿Que esta pasando aqui? ¿Hay alguna solución para solucionar esto sin tiempo de inactividad, o necesito reiniciar el host o reiniciar la interfaz de red?


1
¿Puedes publicar tu salida dmesg?
Mike H

He pegado el mío. En mi caso, era una copia de seguridad que estaba obstruyendo algunas colas en algún lugar, no me queda claro por qué, pero suspender y reanudar la copia de seguridad (rsync --bwlimit = 40) nos solucionó el problema. También intenté duplicar net.inet.tcp.sendbuf_maxy net.inet.tcp.recvbuf_maxno cambié nada.
anarcat

Respuestas:


11

Dado que el problema parece estar aislado de una sola interfaz, supongo que está usando máscaras de clase C antiguas y simples para estas dos redes, lo rechazaría rápidamente:

# ifconfig en0 down
# ifconfig en0 up

Obviamente, debe sustituir el nombre de interfaz correcto aquí en0.

Puede que tenga que reiniciar cualquier servidor que escuche en esa interfaz, y cualquier conexión TCP establecida que lo use se caerá cuando haga esto. Sin embargo, es breve, así que realmente no veo esa prueba como "tiempo de inactividad".

Asegúrate de no hacer esto mientras ssh'd en el cuadro en la interfaz que estás rebotando. Lo mejor es iniciar sesión en la consola cuando haga esto, si puede. Si el servidor es remoto, lo mejor es una conexión de módem, ya que el rebote de las interfaces de red no afectará los gettys en serie. Si debe hacer esto mientras está conectado a través de la red, asegúrese de que su conexión llegue a través de una interfaz diferente.


44
Bueno, resulta que esta interfaz tenía un cable Ethernet suelto. Apreté el cable y desapareció el error "No hay espacio disponible en el búfer". Ahora, tengo que averiguar si tengo que preocuparme por el número 'mbuf', ¿o se borrará solo?
Stefan Lasiewski

Desafortunadamente, el rebote de la interfaz no lo solucionó (hay varias interfaces en esta máquina, probé cada una en secuencia y luego todas a la vez, con la esperanza de que algo libere el espacio). Reinicié la caja y espero que este problema no vuelva a ocurrir después de que arreglemos el cable.
Stefan Lasiewski

1
Una actualización 4 años después. Sí, tengo que preocuparme por el error de mbuf. Este problema aparece ocasionalmente en mis cuadros de FreeBSD y casi siempre está asociado con una alta carga de red y posiblemente con un cable defectuoso.
Stefan Lasiewski

El rebote lo arregló para mí.
gravitación

Vine aquí específicamente para OpenBSD 5.8 AMD64 que se ejecuta en Cloudstack con CentOS6.5 AMD64. Cada vez que se interrumpe la caja física, este VM no puede salir. Traté de hacer rebotar la interfaz y eso no funcionó. Solo pensé en compartir aquí en caso de que alguien más siguiera un camino similar. ACTUALIZACIÓN: menos de un minuto después está funcionando, por lo que tal vez esto lo solucione.
danno
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.