it-swarm-pt.com

FreeBSD: Como corrigir "ping: sendto: não há espaço disponível no buffer"?

Estou tentando executar 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 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
#

A mensagem "Sem espaço no buffer disponível" parece indicar algum tipo de erro de memória. E, de fato, quando eu checo 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? Existe alguma solução para corrigir isso sem tempo de inatividade ou preciso reiniciar o host ou reiniciar a interface de rede?

27
Stefan Lasiewski

Como o problema parece isolado em apenas uma interface - presumo que você esteja usando máscaras simples de classe C antiga para essas duas redes - eu o rejeitaria rapidamente:

# ifconfig en0 down
# ifconfig en0 up

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

Talvez seja necessário reiniciar qualquer servidor que esteja ouvindo nessa interface e quaisquer conexões estabelecidas TCP usando-a cairão quando você fizer isso. É breve, no entanto, para que eu realmente não veja esse teste como "tempo de inatividade".

Certifique-se de não fazer isso enquanto estiver na caixa na interface que você está devolvendo. É melhor fazer login no console quando você fizer isso, se puder. Se o servidor for remoto, é melhor uma conexão de modem, uma vez que o retorno das interfaces de rede não afetará as imagens seriais. Se você precisar fazer isso enquanto estiver conectado pela rede, verifique se a conexão está chegando por uma interface diferente.

11
Warren Young