我在測試超大規模(2048臺機器)上的自制分佈式鍵值存儲時遇到此錯誤,它在1024臺計算機上正常工作。通信模式是n:n,這意味着每臺機器都會向其他人發送大量請求。 我使用C TCP套接字來實現它,SO_REUSEADDR來回收這些套接字。 任何人都可以給我一些關於可能導致這個錯誤的提示嗎?代碼很複雜,很難簡化它並在這裏發佈而不會丟失必要的邏輯。所以我只想知道所有可能的原因開始調試。TCP連接錯誤「沒有可用的緩衝區空間」
BTW我改變設置: 呼應8000>的/ proc/sys目錄/內核/線程-MAX
呼應聽隊列8000>的/ proc/SYS /網/核心/ SOMAXCONN #limit,默認爲128
回聲8000>的/ proc/SYS /淨/型芯/ netdev_max_backlog
回聲10>的/ proc/SYS /淨/的IPv4/tcp_fin_timeout
回聲 「10000 65000」>/PROC/SYS /淨/ ipv4/ip_local_port_range
我這樣做只是爲了啓用最大連接數。
感謝, 託尼
打開了太多的描述可能會導致這個錯誤,也MTU錯誤配置和其他一些條件,我想。不可能確保沒有顯示問題的最小代碼示例。 – 2012-04-15 08:13:53
這個錯誤並不是我之前遇到過的「太多打開的文件描述符」。我也有這些設置:echo 8000>/proc/sys/kernel/threads-max ;; echo 8000>/proc/sys/net/core/somaxconn ;; echo 8000>/proc/sys/net/core/netdev_max_backlog ;; echo 10>/proc/sys/net/ipv4/tcp_fin_timeout ;; echo「10000 65000」>/proc/sys/net/ipv4/ip_local_port_range – Tony 2012-04-15 08:19:16