第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

UDP SetWriteBuffer 和 SetReadBuffer 如何處理操作系統(tǒng)的緩沖區(qū)?

UDP SetWriteBuffer 和 SetReadBuffer 如何處理操作系統(tǒng)的緩沖區(qū)?

Go
慕無(wú)忌1623718 2022-05-23 15:02:01
描述我正忙著用 Go 編寫一個(gè)高頻 UDP 服務(wù)器。我估計(jì)兩種方式至少每秒 1000 個(gè)數(shù)據(jù)包。但是,隨著我通過(guò) UDP 套接字發(fā)送的數(shù)據(jù)大小的增加,我最終遇到了以下錯(cuò)誤:read udp 127.0.0.1:1541->127.0.0.1:9737: wsarecv: A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram into was smaller than the datagram itself.我最終只是增加了我正在讀取和寫入的緩沖區(qū)的大小,如下所示:buffer := make([]byte, 64 * 1024 * 1024) // used to just be 1024l, err := s.socketSim.Read(buffer)這工作正常,我停止收到錯(cuò)誤......但是,我可以跨net包內(nèi)的兩個(gè)函數(shù):s.socketSim.SetWriteBuffer(64 * 1024 * 1024)s.socketSim.SetReadBuffer(64 * 1024 * 1024)我了解到這兩個(gè)作用于operating system's transmit buffer問(wèn)題我是否關(guān)心設(shè)置操作系統(tǒng)緩沖區(qū)大小,為什么?應(yīng)用程序緩沖區(qū)的大小如何影響操作系統(tǒng)緩沖區(qū)的大???它們是否應(yīng)該始終相同,它們應(yīng)該/可以變得多大?
查看完整描述

1 回答

?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

首先,您不僅有設(shè)備上每個(gè)接口的 MTU 大小以及發(fā)送/接收的任何目的地,而且兩者之間的每個(gè)設(shè)備也有一個(gè) MTU 大小。出于這個(gè)原因,正如其他人所提到的,您可能希望使用 MTU 普遍接受的內(nèi)容,因?yàn)槟赡軣o(wú)法控制數(shù)據(jù)路由中的每個(gè)設(shè)備。在 UDP 的情況下,MTU 實(shí)際上只是表示數(shù)據(jù)報(bào)在分片之前可以有多大。

其次,您幾乎肯定希望您的 SND/RCV 緩沖區(qū)大于 MTU。這些是內(nèi)核緩沖區(qū),當(dāng)您還沒(méi)有準(zhǔn)備好接收數(shù)據(jù)時(shí),它們會(huì)保留數(shù)據(jù)。更大的 UDP RCV 緩沖區(qū)意味著內(nèi)核會(huì)在將它們放入深淵之前為您緩沖更多的數(shù)據(jù)包。也許您對(duì)每個(gè)數(shù)據(jù)包都有一些重要的工作要做。根據(jù)比特率,您可能需要更大或更小的內(nèi)核緩沖區(qū)。

最后,您使用的是 UDP。無(wú)法保證您會(huì)按順序或完全收到數(shù)據(jù)包。您和對(duì)等方之間的任何路由器都可能出于任何原因決定丟棄數(shù)據(jù)包。由于您使用的是 UDP,因此您應(yīng)該為丟棄和亂序的數(shù)據(jù)包做好準(zhǔn)備。您可能還需要某種重傳機(jī)制,這會(huì)使事情變得更加復(fù)雜。

或者,如果丟棄的數(shù)據(jù)包不可接受,您可能會(huì)考慮使用 TCP,因?yàn)槟罆r(shí)間是不確定的。

如果您使用的是 linux,則可以在 /proc/sys/net 中查看當(dāng)前緩沖區(qū)大小。通常內(nèi)核會(huì)加倍你的要求。

此外,您可以通過(guò)觀察 /proc/net/udp 中的數(shù)據(jù)包丟失來(lái)調(diào)整緩沖區(qū)大小。如果您看到下降,您可能希望使您的 rcv 緩沖區(qū)更大,特別是在數(shù)據(jù)是突發(fā)的和處理密集型的情況下。如果您的數(shù)據(jù)以一致的速率進(jìn)入并且您仍在丟棄數(shù)據(jù)包,那么您處理它們的速度不夠快。


查看完整回答
反對(duì) 回復(fù) 2022-05-23
  • 1 回答
  • 0 關(guān)注
  • 227 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)