提高WCF性能

时间:2009-04-09 07:18:02

标签: wcf web-services soap

我可以知道改善.Net WCF服务性能的方法吗? 现在它非常缓慢,有时它会堵塞和放大最终停止响应。

7 个答案:

答案 0 :(得分:2)

您在服务类上使用了哪种InstanceContextMode和ConcurrencyMode?

如果是PerCall实例,您可能想检查是否可以减少为每次调用创建服务器实例的开销。

如果是单一实例(单身) - 你真的需要吗? :-)尝试使用PerCall。

马克

答案 1 :(得分:1)

你使用什么装订?如果你正在使用HTTP,你可以通过TCP获得更好的性能。

尽管瓶颈在WCF管道中可能会更高,并且可能在托管对象中更高。

我们需要更多有关您的WCF设置的详细信息才能提供帮助。

答案 2 :(得分:1)

那么,你发送什么样的数据,以及什么绑定?

问题是 size 请求(带宽),还是请求的数量(延迟)。如果延迟,那么只需要更少但更大的请求;-p

对于带宽:如果您通过http发送二进制数据,则可以启用MTOM - 这将节省几个字节。您可以在服务器上启用压缩支持,但这不能保证。

如果您使用.NET到.NET,您可能需要考虑protobuf-net;这有WCF钩子用于交换格式化程序(DataContractSerializer)以使用谷歌的“协议缓冲区”二进制格式,这是非常小和快。我可以根据要求提供 的建议。

除此之外:发送更少的数据;-p

答案 3 :(得分:0)

您描述的症状可能是由任何事物造成的。您需要使用JetBrain的dotTrace或Automated QA的AQTime等分析器缩小范围。

或者您可以通过检测代码(这是分析器为您执行的操作)以旧式方式执行此操作。在操作开始前收集开始时间。完成后,从当前时间中减去开始时间以确定经过的时间,然后将其打印出来或记录下来或其他任何时间。围绕此操作调用的方法执行相同操作。您将很快看到哪些方法花费的时间最长。然后,进入这些方法并执行相同的操作,找出使他们花费这么长时间的内容等等。

答案 4 :(得分:0)

“提高我的.Net WCF服务的性能” - 它是您要求的非常通用的术语,我们可以通过不同的方式提高性能,同时您需要找到哪个导致性能受到影响,如WCF方法中的数据库访问。

请尝试了解WCF中的可用功能,例如oneWay WCF方法,它将帮助您找到提高性能的方法。

由于 Venkat

答案 5 :(得分:0)

以下是一篇文章,其中包含来自实际生产系统的一些统计信息,您可以使用它们来比较/衡量您的效果。

WCF Service Performance

答案 6 :(得分:0)

微软最近发布了一篇知识库文章:

  

这些问题包括以下内容:
  应用程序崩溃
  挂起
  调用WCF服务时应用程序的一般性能。