C# WCF Restful服务性能不佳

C# WCF Restful服务性能不佳,c#,wcf,performance,service,C#,Wcf,Performance,Service,我的wcf restful服务每秒只能处理2个请求 详细说明: 我已经创建了一个wcf restful服务,它通过GET谓词只公开一个方法。 该方法不进行逻辑运算,并立即返回 我还创建了一个测试客户机来检查服务吞吐量和性能,它通过WebHttpRequest发出请求 该服务每秒只能处理2个请求 我还通过我的浏览器向服务提出了请求,结果是相同的:一个请求500毫秒 然后我将服务绑定更改为netTcpBinding,该服务能够每秒处理大约2000个请求 该服务在windows服务下运行,由带有Web

我的wcf restful服务每秒只能处理2个请求

详细说明:

我已经创建了一个wcf restful服务,它通过GET谓词只公开一个方法。 该方法不进行逻辑运算,并立即返回

我还创建了一个测试客户机来检查服务吞吐量和性能,它通过WebHttpRequest发出请求

该服务每秒只能处理2个请求

我还通过我的浏览器向服务提出了请求,结果是相同的:一个请求500毫秒

然后我将服务绑定更改为netTcpBinding,该服务能够每秒处理大约2000个请求

该服务在windows服务下运行,由带有WebHtpBinding的WebServiceHost托管

值得一提的是,客户机和服务都在同一台服务器上运行

wcf restful服务的性能如此之差,这有什么意义吗


非常感谢您的帮助。谢谢。

不,这毫无意义,可能表明您的测试存在问题。您的REST测试客户端是如何编写的?您是否知道,默认情况下,.NET只允许对任何域进行两个打开的连接,以进行“常规”.NET进程”?对于ASP.NET应用程序,它会自动增加到10个

这些信息记录在这里。您可以通过编程或为您尝试连接的域添加更高的限制来增加此限制。就配置而言,这看起来像这样:

<system.net>
    <connectionManagement>
        <add address="www.myserver.com" maxconnection="20" />
    </connectionManagement>
</system.net>


或者,如果您的帖子是。

否,那么它毫无意义,可能表明您的测试存在问题。您的REST测试客户端是如何编写的?您是否知道,默认情况下,.NET只允许对任何域进行两个打开的连接,以进行“常规”.NET进程”?对于ASP.NET应用程序,它会自动增加到10个

这些信息记录在这里。您可以通过编程或为您尝试连接的域添加更高的限制来增加此限制。就配置而言,这看起来像这样:

<system.net>
    <connectionManagement>
        <add address="www.myserver.com" maxconnection="20" />
    </connectionManagement>
</system.net>


或者,如果您的帖子是,.

谢谢Drew。但它仍然没有解释为什么来自浏览器的请求需要500秒。如果您以编程方式调用服务会怎么样?没有任何意义需要500毫秒。。可能还有别的事情发生。可能是代理delay@Simon-这当然解释了两个连接的限制,所以这是你问题答案的一半。至于延迟,我敢打赌这是我们的朋友Nagle算法的结果,该算法默认启用。我将更新我的答案,详细说明禁用该选项的情况。@Drew-我已将“DefaultConnectionLimit”设置为100。性能更好,但与通过net.tcp公开服务相比,我的服务仍然非常慢。此外,Nagle算法在我的客户机中被禁用。我怀疑问题出在服务的某个地方,而不是客户。这种缓慢可能与http keep alive有关吗?理论上,keep alive应该是有帮助的,而不是有害的。也许是时候发布一些代码/配置了,这样我们就可以解决这个问题。WebHttpBinding的性能不应该像您在一个简单的测试用例中看到的那样差。谢谢Drew。但它仍然没有解释为什么来自浏览器的请求需要500秒。如果您以编程方式调用服务会怎么样?没有任何意义需要500毫秒。。可能还有别的事情发生。可能是代理delay@Simon-这当然解释了两个连接的限制,所以这是你问题答案的一半。至于延迟,我敢打赌这是我们的朋友Nagle算法的结果,该算法默认启用。我将更新我的答案,详细说明禁用该选项的情况。@Drew-我已将“DefaultConnectionLimit”设置为100。性能更好,但与通过net.tcp公开服务相比,我的服务仍然非常慢。此外,Nagle算法在我的客户机中被禁用。我怀疑问题出在服务的某个地方,而不是客户。这种缓慢可能与http keep alive有关吗?理论上,keep alive应该是有帮助的,而不是有害的。也许是时候发布一些代码/配置了,这样我们就可以解决这个问题。WebHttpBinding的性能不应该像您在一个简单的测试用例中观察到的那样差。您是否尝试在控制台应用程序中托管它并从另一个控制台应用程序中使用它?还尝试使用basichttpbinding进行测试?您是否尝试在控制台应用程序中托管它并从另一个控制台应用程序中使用它?是否也尝试使用basichttpbinding进行测试?