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 Clusters" 번호가 매우 잘못된 것으로 보입니다.

# 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

문제가 단 하나의 인터페이스에만 국한된 것으로 보이므로 이 두 네트워크에 대해 기존의 일반 클래스 C 마스크를 사용하고 있다고 가정합니다. 신속하게 처리하겠습니다.

# ifconfig en0 down
# ifconfig en0 up

분명히 여기에서 를 올바른 인터페이스 이름으로 대체해야 합니다 en0.

해당 인터페이스를 수신하는 모든 서버를 다시 시작해야 할 수 있으며, 이를 수행하면 이를 사용하여 설정된 모든 TCP 연결이 끊어집니다. 하지만 이는 간단하기 때문에 이러한 테스트를 "다운타임"으로 간주하지 않습니다.

반송하려는 인터페이스의 상자에 SSH로 접속하는 동안에는 이 작업을 수행하지 마십시오. 가능하다면 이 작업을 수행할 때 콘솔에 로그인하는 것이 가장 좋습니다. 서버가 원격인 경우 모뎀 연결이 가장 좋습니다. 네트워크 인터페이스 바운싱이 직렬 getty에 영향을 주지 않기 때문입니다. 네트워크를 통해 로그인한 동안 이 작업을 수행해야 하는 경우 다른 인터페이스를 통해 연결이 이루어지고 있는지 확인하세요.

관련 정보