第一次呼叫WCF很慢(20到30秒)

时间:2016-02-25 14:37:14

标签: c# performance wcf iis xmlserializer

我们有一个在IIS 7.5中托管的WCF服务,在处理这个特定的WCF服务(超过600个操作合同)时,我们注意到在重新启动IIS /应用程序池之后;首次调用WCF的方法需要20-30秒才能完成。

但是,后续对WCF的调用会得到快速处理(以毫秒为单位)。我们希望尽量缩短这一时间,因为它会对第一个用户的用户体验产生影响。

我们还注意到,如果我们将操作合同的数量减少到5/10,那么完成第一次调用所需的时间会急剧减少(以毫秒为单位)。

已通过svcutil.exe实用程序生成WCF客户端代理。我们做了以下更改,看看我们是否可以修复此行为,但是,我们是 仍然遇到相同的时间帧来完成第一次通话。

  1. 禁用/删除MataData Binding的发布
  2. 默认网络代理已被停用。
  3. 我们已经实现了IIS的自动启动功能,并实现了IProcessHostPreloadClient接口的“Preload”方法, 称为“System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailable(virtualPath)”方法。
  4. IIS>空闲超时= 0(永不超时)。
  5. 我们已经对服务器上的所有DLLS进行了SGEN-ed,仍然没有突破。
  6. 进行内存转储以查看DLL.XmlSerializers.dll文件是否已加载到内存中。
  7. 执行ProcMon& ProcExp以查看目标文件是否已加载到内存中。
  8. 我已经向建议的页面读取了1000(自动启动功能,SGENing,PreLoad实现等),但是,我们还没有一个解决方案来减少完成第一次WCF调用所需的时间。

    开发环境

    IIS 7.5
    .Net Framework 4.6
    Windows 7 - 64位
    Visual Studio 2015企业版

    非常感谢任何帮助。

0 个答案:

没有答案