FreeBSD: Bagaimana cara memperbaiki "ping: sendto: Tidak ada ruang buffer tersedia"?

27

Saya mencoba untuk melakukan ping host jarak jauh, tetapi saya mendapatkan kesalahan.

# 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

Ini berfungsi untuk host lain:

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

Pesan "Tidak ada ruang buffer yang tersedia" tampaknya menunjukkan beberapa jenis kesalahan memori. Dan memang, ketika saya memeriksa dengan Netstat, angka "mbuf cluster" terlihat SANGAT salah:

# 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

Apa yang terjadi disini? Apakah ada cara untuk memperbaikinya tanpa downtime, atau apakah saya perlu me-reboot host atau memulai ulang antarmuka jaringan?

Stefan Lasiewski
sumber
1
Bisakah Anda memposting output dmesg Anda?
Mike H
Saya telah menempelkan sendiri. Dalam kasus saya, itu adalah cadangan yang menyumbat antrian di suatu tempat, tidak jelas bagi saya mengapa - tetapi menunda kemudian melanjutkan kembali cadangan (rsync --bwlimit = 40) memperbaiki masalah bagi kami. Saya juga mencoba menggandakan net.inet.tcp.sendbuf_maxdan net.inet.tcp.recvbuf_max, tidak mengubah apa pun.
anarcat

Jawaban:

11

Karena masalahnya tampaknya terisolasi hanya pada satu antarmuka - saya berasumsi Anda menggunakan masker kelas C biasa untuk kedua jaringan ini - Saya hanya dengan cepat memantulkannya:

# ifconfig en0 down
# ifconfig en0 up

Jelas Anda harus mengganti nama antarmuka yang benar di sini en0.

Anda mungkin harus me-restart server yang mendengarkan pada antarmuka itu, dan koneksi TCP yang ada menggunakannya akan turun ketika Anda melakukan ini. Ini singkat, jadi saya tidak benar-benar melihat tes seperti "downtime".

Pastikan untuk tidak melakukan ini saat ssh masuk ke kotak pada antarmuka yang Anda pantulkan. Cara terbaik untuk masuk pada konsol ketika Anda melakukan ini, jika Anda bisa. Jika server jauh, koneksi modem yang terbaik, karena memantul antarmuka jaringan tidak akan mempengaruhi gettys serial. Jika Anda harus melakukan ini saat masuk melalui jaringan, pastikan koneksi Anda masuk melalui antarmuka yang berbeda.

Warren Young
sumber
4
Nah, ternyata antarmuka ini memiliki kabel Ethernet yang longgar. Saya mengencangkan kabel, dan kesalahan "No buffer space available" telah hilang. Sekarang, saya perlu mencari tahu apakah saya perlu khawatir tentang nomor 'mbuf', atau apakah akan menghapusnya sendiri?
Stefan Lasiewski
Sayangnya, memantul antarmuka tidak memperbaikinya (ada beberapa antarmuka pada mesin ini, saya mencoba masing-masing secara berurutan, dan kemudian sekaligus, berharap sesuatu akan membebaskan ruang). Saya reboot kotak itu, dan mudah-mudahan masalah ini tidak akan terjadi lagi setelah kami memperbaiki kabelnya.
Stefan Lasiewski
1
Pembaruan 4 tahun kemudian. Ya, saya perlu khawatir tentang kesalahan mbuf. Masalah ini kadang-kadang muncul pada kotak FreeBSD saya dan hampir selalu dikaitkan dengan beban jaringan yang tinggi, dan mungkin dengan kabel kereta.
Stefan Lasiewski
Bouncing memperbaikinya untukku.
gravitasi
Saya datang ke sini khusus untuk OpenBSD 5.8 AMD64 yang berjalan di Cloudstack yang menjalankan CentOS6.5 AMD64. Setiap kali kotak fisik terganggu, vm ini tidak bisa keluar. Saya mencoba untuk bangkit antarmuka dan itu tidak berhasil. Hanya berpikir saya akan berbagi di sini kalau-kalau ada orang lain turun jalan yang sama. PEMBARUAN- kurang dari satu menit kemudian berfungsi, jadi mungkin ini memperbaikinya.
danno