Ste*_*ski 27 freebsd networking
我正在尝试 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
Run Code Online (Sandbox Code Playgroud)
它适用于其他主机:
# 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
#
Run Code Online (Sandbox Code Playgroud)
消息“没有可用的缓冲区空间”似乎表明某种内存错误。事实上,当我检查 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
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?有没有办法在不停机的情况下解决这个问题,或者我是否需要重新启动主机或重新启动网络接口?
War*_*ung 12
由于该问题似乎仅与一个接口有关——我假设您对这两个网络使用了普通的旧 C 类掩码——我只是快速反弹它:
# ifconfig en0 down
# ifconfig en0 up
Run Code Online (Sandbox Code Playgroud)
显然,您需要在此处用正确的接口名称替换en0
.
您可能必须重新启动侦听该接口的所有服务器,并且在您执行此操作时,使用它的任何已建立的 TCP 连接都将断开。不过,它很简短,所以我并不真正将这样的测试视为“停机时间”。
确保不要在 ssh 进入您正在弹跳的界面上的框时执行此操作。如果可以,最好在执行此操作时登录控制台。如果服务器是远程的,最好使用调制解调器连接,因为弹回网络接口不会影响串行 getty。如果您必须在通过网络登录时执行此操作,请确保您的连接来自不同的接口。