如何计算脱水

若要计算冻结,则需要使用已配置的属性和某些运行时值。 下面的示例演示如何计算假设的冻结方案。

计算冻结

  1. 让 alpha 表示一个介于 0 和 1 之间的因子,以测量内存使用状况。 在实际操作中,alpha 有 3 个不同的部分分别与 3 个内存阻止标准(冻结属性)对应;在本示例中,我们将它们分别表示为 alpha(virtual)、alpha(private) 和 alpha(physical)。 定义以下内容:

    IF ActualPrivateBytes < OptimalUsage  
       alpha(private) = 1  
    ELSE IF ActualPrivateBytes > MaximalUsage  
       alpha(private) = 0  
    ELSE  
       alpha(private) = (MaximalUsage - ActualPrivateBytes) / (MaximalUsage - OptimalUsage)  
    

    注意

    OptimalUsage 和 MaximalUsage 具有每个冻结属性的默认值。 可以在 BTSNTSvc.exe.config 文件中更改这些值。 有关详细信息,请参阅 解除冻结默认属性

  2. 用同样的方法定义其他 alpha 成分。 定义以下内容:

    alpha = Minimum { alpha(virtual), alpha(private), alpha(physical) }  
    where alpha(…) = 1 whenever IsActive=false for that given memory unit  
    
  3. 然后定义 TestThreshold(以秒为单位定义 TestThreshold、MinThreshold、MaxThreshold):

    TestThreshold = MinThreshold + (alpha * (MaxThreshold – MinThreshold))  
    

    注意

    MinThreshold 默认值 = 1。 MaxThreshold 默认值 = 1800。 可以在 BTSNTSvc.exe.config 文件中更改这些值。 有关详细信息,请参阅 解除冻结默认属性

  4. 然后定义 TimeBlocked 和 EstimatedTime:

    • TimeBlocked = 我们等待满足此订阅的实际时间

    • EstimatedTime = 此业务流程保持空闲的估计时间(例如,侦听的剩余超时)

    是否冻结取决于下面布尔值条件的结果(true = 冻结):

  • Dehydrate = (EstimatedTime > TestThreshold OR TimeBlocked > (2* TestThreshold) )

注意

估计时间是至延迟结束的剩余时间(如果延迟 5 分钟,过去了 2 分钟,则 TimeBlocked=120 秒,EstimatedTime=180 秒)。

另请参阅

冻结默认属性
BTSNTSvc.exe.config 文件