加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-13 23:37:07 所属栏目:Windows 来源:网络整理
导读:我们正在对一个接收tcp请求的应用程序进行性能测试,将它们转换为其他服务正在处理的soap请求(WCF-httpBinding). 该服务器是Windows Server 2008 R2. TCP请求由TcpListener实例(.NET C#)接收. 在同一服务器上运行3个http绑定的WCF服务. 我们构建了一个性能测
我们正在对一个接收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响应).

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读