
Я пытаюсь выполнить команду 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
#
Сообщение "No buffer space available" похоже указывает на какую-то ошибку памяти. И действительно, когда я проверяю с помощью 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 к коробке на интерфейсе, который вы отбиваете. Лучше всего войти в систему с консоли, когда вы это делаете, если можете. Если сервер удаленный, лучше всего использовать модемное соединение, так как отбив сетевых интерфейсов не повлияет на последовательные gettys. Если вам нужно сделать это, когда вы вошли в систему по сети, убедитесь, что ваше соединение идет через другой интерфейс.