冻结默认属性
以下是冻结属性的名称及其默认值。 这些属性可在 BizTalk 设置仪表板中配置,也可在 BizTalk 配置文件 (BTSNTSvc.exe.config 或 BTSNTSvc64.exe.config) 中作为 XML 进行配置。 将首先应用 BizTalk 配置文件中的值, 然后,应用 BizTalk 设置仪表板设置。 所有包含业务流程的主机实例启动后,将读取冻结属性。
重要
并非所有业务流程设置都在 BizTalk 设置仪表板中公开。 对于这些设置,将使用 BizTalk 配置文件(BTSNTSvc.exe.config 或 BTSNTSvc64.exe.config)。 使用 BizTalk 配置文件时,许多属性并未列出, 但这些属性及其默认值仍然适用,即使并未在配置文件中明确指定它们。
若要更改默认值,可以使用 BizTalk 设置仪表板或将其显式添加到 BizTalk 配置文件。 有关详细信息,请参阅使用设置仪表板BizTalk Server性能优化和 BTSNTSvc.exe.config 文件。
脱水
MaxThreshold = 1800
MinThreshold = 1
ConstantThreshold = -1
VirtualMemoryThrottlingCriteria
OptimalUsage = 900
MaximalUsage = 1300
IsActive = true
PrivateMemoryThrottlingCriteria
OptimalUsage = 50
MaximalUsage = 350
IsActive = true
PhysicalMemoryThrottlingCriteria
OptimalUsage = 90
MaximalUsage = 95
IsActive = false
下面对每一个属性详细说明。
脱水
MaxThreshold 和 MinThreshold 是可在订阅 (阻止业务流程的时间上限和下限(以秒为单位),即在冻结之前,由接收、侦听或延迟) 阻止。 还会在运行时计算一个名为 TestThreshold 的值,其值(以秒为单位)介于 MinThreshold 和 MaxThreshold 之间。
如果为 ConstantThreshold 设置了默认值 -1 以外的值,则不会有运行时值 TestThreshold。 如果某个业务流程在订阅中被阻止,并且该订阅上阻止该业务流程的所有实例的历史记录大于 TestThreshold 的值,则该业务流程将解除冻结。 否则,如果历史记录小于 TestThreshold 值,则业务流程不会解除冻结。 此外,即使历史记录指示不会发生脱水,如果当前阻塞时间达到 2*TestThreshold,则发生脱水。 历史记录由最后 10 个等待时间的平均值定义(秒),或者历史记录中所有等待时间的平均值定义(如果等待次数少于 10)。
当内存使用量增加时 TestThreshold 的值倾向于 MinThreshold 时,它称为“基于内存的冻结限制”。基于内存的解除冻结限制允许更多业务流程实例处于活动状态,因为当任一业务流程实例被阻止等待工作 ((即等待消息或延迟) )时,它们可能会脱水并取出内存。 TestThreshold 是内存使用量的单调递减函数,它与内存使用量成反比。
以下是各个冻结属性的说明:
MaxThreshold:业务流程在解除冻结之前可在订阅中被阻止的时间上限(以秒为单位)。
MinThreshold:在解除冻结之前可在订阅中阻止业务流程的时间的下限(以秒为单位)。
ConstantThreshold:动态阈值,通常在指定的最小值和最大值之间波动。 不过,可通过设置此属性使阈值成为不变值。 如果值为 -1,表示引擎不使用常数阈值。 不要将此属性设置为除 -1 之外的值,因为这样会禁用基于冻结的阻止。
VirtualMemoryThrottlingCriteria
目前,虚拟内存会由于未托管的堆碎片而成为 32 位计算机上的瓶颈,因此,你应该根据此资源进行阻止。 你应该重新配置是否设置 /3GB 或者主机是否运行在 64 位平台上。 最佳使用量和最大使用量的单位为 MB。
以下是各个 VirtualMemoryThrottlingCriteria 属性的说明:
OptimalUsage:冻结限制开始生效的虚拟内存使用量。 此时, TestThreshold 具有 MaxThreshold 值,并且任何大于 OptimalUsage 的内存使用量都会导致 TestThreshold 小于 MaxThreshold。
MaximalUsage:冻结限制的最大虚拟内存使用量。 此时, TestThreshold 的值为 MinThreshold ,任何小于 MaximalUsage 的 内存使用量都会导致 TestThreshold 大于 MinThreshold。
IsActive:一个布尔值,指示虚拟内存限制是否处于活动状态。
PrivateMemoryThrottlingCriteria
此属性是一个用于阻止的有用标准,但其值是否合适取决于计算机是否运行其他 Windows 服务。 如果计算机有大量内存,并且不与其他 Windows 服务共享,你可以大幅增加这些值。
以下是各个 PrivateMemoryThrottlingCriteria 属性的说明:
OptimalUsage:专用内存使用量(以 MB 为单位),其中解除冻结限制开始生效。 此时 ,TestThreshold 具有 MaxThreshold 值,并且任何大于 OptimalUsage 的 内存使用量都会导致 TestThreshold 小于 MaxThreshold。
MaximalUsage:专用内存使用量(以 MB 为单位),其中冻结限制最大。 此时 ,TestThreshold 的值为 MinThreshold ,任何小于 MaximalUsage 的 内存使用量都会导致 TestThreshold 大于 MinThreshold。
IsActive:一个布尔值,指示专用内存限制是否处于活动状态。
PhysicalMemoryThrottlingCriteria
另外,还有物理内存阻止,其度量单位为内存使用百分比,而不是 MB。 默认情况下,此属性禁用,但你可以根据需要启用它。
以下是各个 PhysicalMemoryThrottlingCriteria 属性的说明:
OptimalUsage:用于主机实例的最佳物理内存百分比。
MaximalUsage:用于主机实例的物理内存的最大百分比。
IsActive:指示物理内存限制是否处于活动状态的布尔值。
冻结属性行为
BizTalk Server 使用这些冻结属性来确定何时对业务流程冻结和解除冻结。 在正常的负载下,默认冻结值就足够了,但如果运行在较高的负载下,并且希望改变性能特征,应自己进行优化。
BizTalk Server 的冻结行为完全取决于有多少内存可用以及有多少内存正在使用中。 由于内存量不同以及 32 位和 64 位主机内存使用量不同,冻结行为也不同。
对于业务流程主机,冻结属性分“专用字节”和“虚拟字节”:
虚拟字节数。 这是进程使用的虚拟地址空间的当前大小(以字节为单位)。 使用虚拟地址空间不一定意味着要使用磁盘或主内存页。 虚拟空间是有限的,进程可以限制其加载库的能力。
专用字节。 是此进程分配的不能与其他进程共享的内存量的当前大小(以字节为单位)。