windows-server-2008 – 性能测试和TCP调优

前端之家收集整理的这篇文章主要介绍了windows-server-2008 – 性能测试和TCP调优前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在对一个接收tcp请求的应用程序进行性能测试,将它们转换为其他服务正在处理的soap请求(WCF-httpBinding).

该服务器是Windows Server 2008 R2.
TCP请求由TcpListener实例(.NET C#)接收.
在同一服务器上运行3个http绑定的WCF服务.

我们构建了一个性能测试客户端,其目标是模拟多个并发请求(每个请求必须是不同的,并且应用程序可以识别).

我们构建了一个测试,运行150个同时运行的请求(150个不同的线程),我们立即注意到一些请求缓慢地获得TCP连接,但一旦得到它,它们就会快速行动.

单个请求在同一连接请求和应用程序确认上写入两次.

虽然单个请求确认可能需要大约150毫秒,但150测试大约需要7秒.

问题

当我们尝试从2台不同的计算机运行此测试时,我们会丢失请求.一些客户要求越来越多

no connection was made because the target machine actively refused it

所以我得到here并且确信这是因为积压.
我更改了TcpListener参数,并将注册表AFD积压更改写为here
但它仍然无法正常工作,所以我插入了所有建议的TCP调优加上一些推荐的netsh命令,但仍然没有变化,我们仍然得到了这个错误.

还有什么我需要知道的吗?还有其他解决方案吗?

这是一个令人遗憾的Windows烦恼.当Windows服务器不堪重负时,它会主动拒绝连接(使用RST响应)而不是仅响应它们(不发送SYN).为防止将此解释为失败,Windows客户端通常会重试连接(发送另一个SYN),即使它们被主动拒绝(使用RST响应).

您应该重试连接,即使它被主动拒绝.显然,如果您每秒尝试的连接数超过服务器可以处理的数量,则无法全部成功.您希望如何处理此案例取决于您.

所以简短的回答是 – 如果您获得的连接尝试次数超过服务器可以处理的次数,您希望发生什么?你想让他们真的走得很慢吗?或者你想让他们失败?如果是前者,则永远重试,在重试之间等待更长时间.如果是后者,那就放弃吧.

增加积压将有助于保持短暂的负载突发不会触发此错误.但是,如果连接速率超过服务器可以处理的速率,则无法使其正常工作.由于连接速率超过工作完成率,因此没有有限数量的备份连接.所以在某些时候,你必须开始失败,除非客户端被特别编码为永远重试.

猜你在找的Windows相关文章