【发布时间】:2015-12-15 16:46:00
【问题描述】:
作为测试,我编写了一个小工具来测试两台 PC 之间的 LAN 连接。
它是一个客户端/服务器模型,它只发送尽可能多的 UDP 数据包,另一方面,我可以读取所有内容。
为了最大限度地利用我的资源,我为我的机器拥有的每个内核启动了一个 goroutine。
发送、接收和测量速度有效,但是当我达到高吞吐量(500+ Mb/s)时,接收端变得完全没有响应。
如果我限制连接,我没有任何问题。
我的 CPU 也只使用了一个核心(尽管我使用了 runtime.GOMAXPROCS(0) 并开始在 runtime.NumCPU goroutines 中接收)
我在这里将代码上传到 GitHub:https://github.com/femot/lanbench
如果我将客户端更改为在本地运行,则不会出现问题。仅当我从另一台 PC 启动客户端时才会发生这种情况(尽管测得的速度也达到 650 Mb/s)
【问题讨论】:
标签: go