FreeBSD: วิธีแก้ไข“ ping: sendto: ไม่มีพื้นที่บัฟเฟอร์”


27

ฉันพยายาม 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
คุณสามารถโพสต์เอาต์พุต dmesg ของคุณได้หรือไม่?
Mike H

ฉันได้วางของตัวเอง ในกรณีของฉันมันเป็นข้อมูลสำรองที่อุดตันคิวอยู่ที่ไหนสักแห่งมันไม่ชัดเจนสำหรับฉันว่าทำไม - แต่การระงับแล้วเริ่มการสำรองข้อมูลอีกครั้ง (rsync --bwlimit = 40) แก้ไขปัญหาให้เรา ฉันได้ลองเพิ่มเป็นสองเท่าnet.inet.tcp.sendbuf_maxและnet.inet.tcp.recvbuf_maxไม่เปลี่ยนแปลงอะไรเลย
anarcat

คำตอบ:


11

เนื่องจากดูเหมือนว่าปัญหาจะแยกเป็นอินเทอร์เฟซเดียว - ฉันคิดว่าคุณใช้มาสก์คลาส C ธรรมดาสำหรับเครือข่ายทั้งสองนี้ - ฉันเพิ่งจะตีกลับอย่างรวดเร็ว:

# ifconfig en0 down
# ifconfig en0 up

en0เห็นได้ชัดว่าคุณต้องทดแทนชื่ออินเตอร์เฟซที่ถูกต้องที่นี่สำหรับ

คุณอาจต้องรีสตาร์ทเซิร์ฟเวอร์ใด ๆ ที่ฟังบนอินเทอร์เฟซนั้นและการเชื่อมต่อ TCP ที่สร้างขึ้นโดยใช้จะลดลงเมื่อคุณทำเช่นนี้ แม้ว่าจะเป็นช่วงสั้น ๆ ดังนั้นฉันจึงไม่เห็นว่าการทดสอบดังกล่าวเป็น "การหยุดทำงาน"

อย่าทำเช่นนี้ในขณะที่คุณอยู่ในกล่องบนอินเทอร์เฟซที่คุณตีกลับ เป็นการดีที่สุดที่จะเข้าสู่ระบบบนคอนโซลเมื่อคุณทำสิ่งนี้ถ้าทำได้ หากเซิร์ฟเวอร์อยู่ไกลการเชื่อมต่อโมเด็มจะดีที่สุดเนื่องจากการกระดอนอินเทอร์เฟซเครือข่ายจะไม่มีผลกับอนุกรม gettys หากคุณต้องทำสิ่งนี้ในขณะที่ล็อกอินผ่านเครือข่ายตรวจสอบให้แน่ใจว่าการเชื่อมต่อของคุณเข้ามาในอินเทอร์เฟซอื่น


4
เอาล่ะอินเตอร์เฟสนี้มีสายอีเธอร์เน็ตหลวม ฉันขันสายเคเบิลและข้อผิดพลาด "ไม่มีพื้นที่บัฟเฟอร์พร้อมใช้งาน" หายไป ตอนนี้ฉันต้องคิดออกถ้าฉันต้องกังวลเกี่ยวกับหมายเลข 'mbuf' หรือจะล้างด้วยตัวเองหรือไม่
Stefan Lasiewski

โชคไม่ดีที่การเด้งอินเทอร์เฟซไม่ได้แก้ไข (มีหลายอินเตอร์เฟสในเครื่องนี้ฉันลองแต่ละอันตามลำดับและจากนั้นทั้งหมดพร้อมกันโดยหวังว่าจะมีบางสิ่งบางอย่างเพิ่มพื้นที่ว่าง) ฉันบูตเครื่องใหม่และหวังว่าปัญหานี้จะไม่เกิดขึ้นอีกหลังจากเราแก้ไขสายเคเบิล
Stefan Lasiewski

1
การปรับปรุง 4 ปีต่อมา ใช่ฉันต้องกังวลเกี่ยวกับข้อผิดพลาด mbuf ปัญหานี้ปรากฏขึ้นเป็นครั้งคราวในกล่อง FreeBSD ของฉันและมักจะเกี่ยวข้องกับโหลดเครือข่ายสูงและอาจมีสายเคเบิลบั๊กกี้
Stefan Lasiewski

กำยำแก้ไขให้ฉัน
ความโน้มถ่วง

ฉันมาที่นี่โดยเฉพาะสำหรับ OpenBSD 5.8 AMD64 ที่ทำงานบน Cloudstack ที่รัน CentOS6.5 AMD64 ทุกครั้งที่กล่องทางกายภาพถูกขัดจังหวะ vm นี้จะไม่สามารถออกไปได้ ฉันพยายามตีกลับส่วนต่อประสานและไม่ได้ผล แค่คิดว่าฉันจะแบ่งปันที่นี่ในกรณีที่คนอื่นลงไปในเส้นทางที่คล้ายกัน อัปเดต - น้อยกว่าหนึ่งนาทีหลังจากนี้มันใช้งานได้ดังนั้นอาจแก้ไขได้
danno
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.