FreeBSD: Como consertar “ping: sendto: sem espaço de buffer disponível”?

25

Estou tentando fazer ping em um host remoto, mas recebo um erro.

# 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 outros anfitriões:

# 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
#

A mensagem "Nenhum espaço de buffer disponível" parece indicar algum tipo de erro de memória. E, de fato, quando eu verifico com o Netstat, o número "mbuf clusters" parece MUITO errado:

# 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

O que está acontecendo aqui? Está lá para corrigir isso sem tempo de inatividade, ou eu preciso reiniciar o host ou reiniciar a interface de rede?

    
por Stefan Lasiewski 10.08.2010 / 21:50

1 resposta

10

Como o problema parece estar isolado em apenas uma interface - suponho que você esteja usando máscaras antigas de classe C para essas duas redes - eu acabei de rejeitá-lo rapidamente:

# ifconfig en0 down
# ifconfig en0 up

Obviamente, você precisa substituir o nome correto da interface aqui por en0 .

Você pode ter que reiniciar todos os servidores que estiverem ouvindo nessa interface, e quaisquer conexões TCP estabelecidas usando-as serão descartadas quando você fizer isso. É breve, portanto, não vejo realmente esse teste como "tempo de inatividade".

Certifique-se de não fazer isso enquanto estiver na caixa da interface que você está pulando. É melhor fazer login no console quando você fizer isso, se puder. Se o servidor for remoto, uma conexão por modem é a melhor, já que o salto das interfaces de rede não afetará os gettys em série. Se você precisar fazer isso enquanto estiver conectado à rede, verifique se sua conexão está chegando em uma interface diferente.

    
por 10.08.2010 / 22:41