none
Windows上对于不同源端口的UDP数量限制问题

    问题

  • 最近在做Windows上UDP服务端的性能测试,发现这样一个事情,如果模拟发包的程序源端口在不停的变化,那么接收端就会大量丢包(大概5k每秒的发包速度只能收到3k每秒),如果源端口不变化则不丢包。请问下各位高手,是不是由于源端口变化会新建socket,而Windows是对socket数量有什么限制么?怎么突破这个限制?谢谢!

    补充下:在Linux上是没有这个问题的,同样的发包程序,同样的收包逻辑,收包程序非常简单,就是收到一个包记一个数,不做任何业务逻辑处理。

    2016年1月28日 6:26

全部回复

  • 你好,ruirayrui

    你可以首先参考下如下的英文帖子,然后通过“... HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort” 可以找到对应的限制。

    http://stackoverflow.com/questions/9487569/windows-limitation-on-number-of-simultaneously-opened-sockets-connections-per-ma

    Best Regards,

    Albert Zhang


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年1月28日 8:05
  • 您好,感谢你的回答

    1、链接中给的方案是把发送端的端口限制死,这个在我们的场景中不能接受,因为无法预知客户端的行为

    2、我已经将接收端的Windows中的MaxUserPort项改到65534,然而重启了也没有作用

    补充一下:丢包的原因是有一个CPU占用非常高,现在就是不清楚为什么源端口变化会导致某个CPU占用很高

    2016年1月28日 9:36