FreeBSD: Nasıl düzeltmek için “ping: sendto: Arabellek alanı yok”?


27

Uzaktaki bir ana bilgisayara ping işlemi yapmaya çalışıyorum, ancak bir hata alıyorum.

# 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

Diğer bilgisayarlar için çalışıyor:

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

"Kullanılabilir arabellek alanı yok" mesajı bir çeşit bellek hatasını gösteriyor gibi görünüyor. Gerçekten de, Netstat'ı kontrol ettiğimde, "mbuf kümeleri" sayısı ÇOK yanlış görünüyor:

# 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

Burada neler oluyor? Arıza süresi olmadan bu sorunu çözmek için uzakta mı yoksa ana bilgisayarı yeniden başlatmam veya ağ arayüzünü yeniden başlatmam gerekir mi?


1
Dmesg çıktınızı gönderebilir misiniz?
Mike H

Kendime yapıştırdım. Benim durumumda, bir yerlerde bazı sıraları tıkayan bir yedekleme yapıldı, neden bana belli değil - ama erteledi ve sonra erteleme (rsync --bwlimit = 40) bizim için sorunu düzeltti. Ayrıca iki katına çıkmayı da denedim net.inet.tcp.sendbuf_maxve net.inet.tcp.recvbuf_maxhiçbir şeyi değiştirmedim.
anarcat

Yanıtlar:


11

Sorun sadece bir arayüze göre göründüğü için - bu iki ağ için eski C sınıfı maskeleri kullandığınızı varsayıyorum - Hemen hemen zıplardım:

# ifconfig en0 down
# ifconfig en0 up

Açıkçası, burada doğru arabirim adını değiştirmeniz gerekir en0.

Bu arayüzü dinleyen herhangi bir sunucuyu yeniden başlatmanız gerekebilir ve bunu yaptığınızda bunu kullanan herhangi bir TCP bağlantısı kesilecektir. Yine de kısa, bu yüzden gerçekten "kesinti" gibi bir test görmüyorum.

Sıçradığınız arayüzdeki kutuya girerken bunu yapmadığınızdan emin olun. Bunu yaparken konsolda oturum açmak en iyisidir. Sunucu uzaktaysa, bir ağ bağlantısı arabirimlerinin sıçraması seri getty'leri etkilemeyeceğinden modem bağlantısı en iyisidir. Bunu ağ üzerinden giriş yaparken yapmanız gerekiyorsa, bağlantınızın farklı bir arayüz üzerinden geldiğinden emin olun.


4
Şey, bu arayüzün gevşek bir Ethernet kablosu olduğu ortaya çıktı. Kabloyu sıktım ve "Arabellek alanı yok" hatası ortadan kalktı. Şimdi, 'mbuf' numarası için endişelenmem gerekip gerekmediğini öğrenmem gerekiyor mu yoksa kendi başına mı belli olacak?
Stefan Lasiewski,

Ne yazık ki, arayüzü sıçramak sorunu çözmedi (bu makinede birden fazla arabirim var, her birini sırayla denedim ve sonra bir kerede bir şeyin alanı boşaltacağını umarak). Kutuyu yeniden başlattım ve umarım bu sorun kabloyu tamir ettikten sonra tekrar olmaz.
Stefan Lasiewski

1
4 yıl sonra yapılan güncelleme. Evet, mbuf hatasıyla ilgili endişelenmeme gerek var. Bu sorun zaman zaman FreeBSD kutularımda ortaya çıkıyor ve neredeyse her zaman yüksek ağ yüküyle ve muhtemelen bir kablo kablosuyla ilişkilendiriliyor.
Stefan Lasiewski

Zıplayan benim için düzeltti.
yerçekimi

Buraya özellikle CentOS6.5 AMD64 kullanan Cloudstack'ta çalışan OpenBSD 5.8 AMD64 için geldim. Fiziksel kutu her kesintiye uğradığında bu vm dışarı çıkamaz. Arayüzü sıçramaya çalıştım ve işe yaramadı. Başka birinin de benzer bir yoldan geçmesi durumunda burada paylaşacağımı düşündüm. GÜNCELLEME - bir dakikadan az bir süre sonra çalışıyor, bu yüzden belki de bunu düzeltiyor
danno,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.