目前我遇到130688字節的硬限制。如果我嘗試在一條消息中發送更大的內容,則會出現ENOBUFS錯誤。可以在linux中發送的AF_UNIX數據報消息的最大大小是多少?
我檢查了net.core.rmem_default,net.core.wmem_default,net.core.rmem_max,net.core.wmem_max和net.unix.max_dgram_qlen sysctl選項並增加了它們,但它們沒有效果,因爲這些處理總緩衝區大小而不是消息大小。
我也設置了SO_SNDBUF和SO_RCVBUF套接字選項,但是這與上面的問題相同。無論如何,默認套接字緩衝區大小基於_default套接字選項設置。
我查看了ENOBUFS在套接字堆棧中返回的內核源碼,但是它並不清楚它來自哪裏。似乎返回這個錯誤的唯一地方與無法分配內存有關。
最大尺寸實際上是130688嗎?如果沒有,可以在不重新編譯內核的情況下進行更改?
謝謝!
這是一個巨大的數據報。在我看來,當你有一個很大的數據報時,你也可以使用TCP。 – 2011-01-18 21:37:01
是的,這並沒有幫助。正如我在帖子中所述,無論您使用的是wmem設置,它都不會讓您通過130688發送消息。我有他們超過32MB,並已嘗試下面的許多組合。 – Jaime 2011-01-18 22:04:47