WCF - WebHttpBinding - RESTful - 性能问题

时间:2015-06-08 20:13:37

标签: performance wcf rest webhttpbinding

第一次发布海报让我很轻松。

我目前正在尝试在一分钟不活动后点击我的网络服务时解决性能问题。字面意思是,在用户没有点击Web服务的一分钟之后,下一次调用将需要15秒才能实际执行服务操作。如果你继续随机(不是相同的服务操作,那么你们不认为它是"缓存"呼叫)服务操作调用服务立即返回(不到一秒)。

以下是一些"时间"我决定这样做,你可以看到我是如何进入一分钟不活动的:

  1. 下午2点04分
  2. 2:16 PM --15秒
  3. 2:21 PM --15秒
  4. 下午2:24 --15秒
  5. 下午2:25 --15秒
  6. 同样,如果您在没有一分钟不活动的情况下连续点击Web服务,那么ALL方法将在不到一秒的时间内返回。

    以下是有关我的网络服务的一些详细信息:

    1. WCF,WebHttpBinding,RESTful,使用HTTP。
    2. 使用IDispatchMessageInspector进行基本身份验证+自定义身份验证。每次调用都会进行身份验证(Initializer.aspx页面除外)。
    3. 已创建Custom Initialization.aspx页面,该页面在应用程序池被回收后每晚调用。该页面缓存了所有用户使用的一堆全局数据,并开始编译。
    4. 应用程序池仅在凌晨2点进行回收。工作线程永远不会被终止,因为超时被禁用。
    5. 我听说过ReliableSession,但是因为设置暗示它听起来只适用于PerSession而不是PerCall。

      有什么方法可以解决这个问题,或者我是否坚持使用" pinging"服务器每隔45秒使用一次虚拟服务操作吗?

1 个答案:

答案 0 :(得分:0)

发现了这个问题。我们有多个域控制器。当用户进行身份验证时,它将从林级别开始,然后向下运行到服务器所在的实际域控制器。安装的防火墙阻止了除服务器所在的所有域控制器。

所以基本上,它会无法与N +域控制器进行通信,直到它最终达到唯一可能的状态。

您可以通过多种方式解决此问题,但我们只是创建了防火墙规则,以允许Web服务器与需要对其进行身份验证的域控制器进行通信。