Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何调整TCP以实现高性能单向传输?_Windows_Performance_Networking_Tcp - Fatal编程技术网

Windows 如何调整TCP以实现高性能单向传输?

Windows 如何调整TCP以实现高性能单向传输?,windows,performance,networking,tcp,Windows,Performance,Networking,Tcp,我的(网络)客户端每200ms向我的服务器发送50到100KB的数据包。有多达300个客户。服务器不向客户端发送任何内容。服务器(专用)和客户端位于LAN中。如何调整TCP配置以获得更好的性能?Windows Server 2003或2008上的服务器,Windows 2000及更高版本上的客户端 e、 g.TCP窗口大小。更改此参数是否有帮助?别的?有特殊的插座选择吗 [编辑]:实际上,在不同的模式下,数据包最高可达5MB,这是什么操作系统? IPv4还是v6? 为什么这么大的垃圾场;为什么它

我的(网络)客户端每200ms向我的服务器发送50到100KB的数据包。有多达300个客户。服务器不向客户端发送任何内容。服务器(专用)和客户端位于LAN中。如何调整TCP配置以获得更好的性能?Windows Server 2003或2008上的服务器,Windows 2000及更高版本上的客户端

e、 g.TCP窗口大小。更改此参数是否有帮助?别的?有特殊的插座选择吗

[编辑]:实际上,在不同的模式下,数据包最高可达5MB,这是什么操作系统? IPv4还是v6? 为什么这么大的垃圾场;为什么它不能被分解

假设有一个稳定、低带宽的延迟产品,您可以调整飞行中的大小、初始窗口大小、mtu(取决于数据、IP版本和模式[tcp/udp])

您还可以循环或平衡输入,因此nic的中断时间更少。绑定也是一个选项

5MB/packet/?这是一个非常糟糕的设计。我认为这将导致大量的段重传,并且在序列重建/重传(接受等待时间等)中使用大量的内核/堆栈内存


(这可能吗?

几年前,我用1700个数据点对此进行了研究。结论是,你能做的最好的事情就是配置一个巨大的套接字接收缓冲区(例如512k)在接收器处。对侦听套接字执行此操作,这样它将被接受的套接字继承,因此在握手时它已经被设置。这反过来允许在握手过程中协商TCP窗口缩放,从而允许客户端知道大于64k的窗口大小。巨大的窗口大小基本上允许客户端进行传输mit以最大可能的速率运行,只需避免拥塞,而不是关闭接收窗口。

由于所有客户端都在LAN中,您可以尝试启用“巨型帧”(需要为此运行netsh命令,需要通过谷歌搜索精确的命令,但有很多方法)

在应用程序层,您可以使用TransmitFile,它与Windows sendfile等效,在Windows Server 2003下运行良好(在“非服务器”下人为地限制了速率,但这对您来说不是问题)。请注意,如果动态生成数据,您可以使用内存映射文件

至于调整参数,增加发送缓冲区可能不会给您带来任何好处,尽管在某些情况下增加接收缓冲区可能会有所帮助,因为如果接收应用程序处理传入数据的速度不够快,它会降低数据包被丢弃的可能性。更大的TCP窗口大小(注册表设置)可能会有所帮助,因为这允许发送方在必须阻止直到ACK到达之前发送更多数据


提高程序的工作集配额可能值得考虑,它不需要花费任何费用,而且可能是一种优势,因为内核在发送页面时需要锁定页面。允许锁定更多页面可能会加快速度(也可能不会,但也不会有损,默认值无论如何都低得离谱).

我看不到与此相关的编程。它可能属于服务器故障。“套接字选项”听起来像是对
setsockopt()的调用
对我来说…@David:我想可以从代码中配置一些选项。从代码中配置选项并不意味着编程,除非想法是通过编程方式更改它们。我认为他指的是每个发送呼叫5MB,而不是每个数据包。可能他所依赖的任何抽象都是在e中将数据拆分为数据包ntirely transparent way.winserver 2003/2008(服务器)和windows 2000及以上(客户端)。默认情况下为IPv4。IPv6在这种情况下不提供任何好处,或者只是提供不同的调整吗?抱歉,我不明白你的一些想法。可以分解哪些内容?顺便说一句,数据已经压缩。请详细说明“循环或平衡输入”和“绑定”好吗在某些模式下,5MB数据块是可能的。这一事实如何描述设计质量?:)我只是发送它们,TCP堆栈将它们拆分为数据包。这不好吗?回答得真棒。我希望我能为它+5