FreeBSD: 「ping: sendto: 使用可能なバッファ領域がありません」を修正するにはどうすればいいですか?

FreeBSD: 「ping: sendto: 使用可能なバッファ領域がありません」を修正するにはどうすればいいですか?

リモート ホストに ping を実行しようとしていますが、エラーが発生します。

# 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

他のホストでも動作します:

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

「使用可能なバッファ領域がありません」というメッセージは、何らかのメモリ エラーを示しているようです。実際、Netstat で確認すると、「mbuf クラスタ」の数値が非常に間違っているように見えます。

# 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

何が起こっているのでしょうか? ダウンタイムなしでこれを修正する方法はありますか? それとも、ホストを再起動するか、ネットワーク インターフェイスを再起動する必要がありますか?

答え1

問題は 1 つのインターフェースだけに限定されているようなので (これら 2 つのネットワークには、単純な古いクラス C マスクを使用していると想定します)、すぐにバウンスします。

# ifconfig en0 down
# ifconfig en0 up

当然、ここでは を正しいインターフェース名に置き換える必要がありますen0

そのインターフェースでリッスンしているサーバーを再起動する必要がある場合があり、これを行うと、そのインターフェースを使用して確立された TCP 接続はすべて切断されます。ただし、これは短時間であるため、このようなテストを「ダウンタイム」と見なすことはありません。

バウンスするインターフェース上のボックスに ssh でログインしている間は、これを行わないようにしてください。可能であれば、これを行うときはコンソールにログインするのが最善です。サーバーがリモートの場合は、ネットワーク インターフェースをバウンスしてもシリアル getty には影響しないため、モデム接続が最適です。ネットワーク経由でログインしているときにこれを行う必要がある場合は、接続が別のインターフェース経由で行われていることを確認してください。

関連情報