我们有一个WCF服务,该服务调用第三方文档管理系统来上载和检索文档。 文档被上载并作为byte []检索。 最近有很多问题导致文档无法上传等。 较早的配置是这样的:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple)]
第三方小组后来告诉我们,他们不支持多线程,因此我们将设置更改为:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall,
ConcurrencyMode = ConcurrencyMode.Single)]
此更改之后,一切开始正常运行,故障率急剧下降。 但是我们开始出现内存不足异常-该服务每天至少关闭两次。据我所知,我们没有在应用程序中维护任何会话数据。此WCF应用程序由同一服务器上托管的另外两个WCF应用程序使用(它们在默认设置下运行)。 我想知道percall,单线程是否是WCF应用程序的最佳配置。