我可以知道改善.Net WCF服务性能的方法吗? 现在它非常缓慢,有时它会堵塞和放大最终停止响应。
答案 0 :(得分:2)
您在服务类上使用了哪种InstanceContextMode和ConcurrencyMode? p>
如果是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)
以下是一篇文章,其中包含来自实际生产系统的一些统计信息,您可以使用它们来比较/衡量您的效果。
答案 6 :(得分:0)
微软最近发布了一篇知识库文章:
这些问题包括以下内容:
应用程序崩溃
挂起
调用WCF服务时应用程序的一般性能。