共用方式為


協調流程凍結和解除凍結

當許多長時間執行的商務程序同時執行時,記憶體和效能是可能發生的問題。 協調流程引擎透過「凍結」和「解除凍結」協調流程執行個體來解決這些問題。

凍結是將協調流程狀態序列化到 SQL Server 資料庫中的程序。 解除凍結是此程式的反轉:從資料庫還原序列化協調流程的最後一個執行狀態。 凍結是藉由減少必須一次在記憶體中產生的協調流程數目,來將系統資源的使用降至最低。

Dehydration

協調流程引擎可能會判斷協調流程執行個體是否已經閒置相當長的一段時間。 它會計算閾值以決定各種動作發生之前應等待多久時間,若已超過這些閾值,則會凍結該執行個體。 在下列狀況下可能會發生這種情形:

  • 當協調流程等待接收訊息,且等待時間超過引擎決定的閾值。

  • 當協調流程「正在接聽」訊息時,如同您在使用 接聽 圖形時所做的一樣,而且引擎所決定的臨界值之前不會觸發任何分支。 唯一的例外是 當接聽 圖形包含啟用接收時。

  • 當協調流程中的延遲超過引擎決定的閾值。

    引擎會儲存狀態以凍結執行個體,並釋出執行個體所需的記憶體。 透過凍結休眠的協調流程執行個體,引擎就可以讓大量的長時間執行之商務程序在相同電腦上同時執行。

    您可以設定 12 個屬性,設定凍結在 BizTalk Server 中的運作方式。 本節中的主題會列出並說明屬性及其預設值,也會討論不同的值如何影響凍結的行為。

解除凍結

可透過訊息回條或在「延遲」圖形中指定的逾時過期來觸發協調流程引擎,以解除凍結協調流程執行個體。 然後,該引擎就會將已儲存的協調流程執行個體載入記憶體、還原其狀態,並從原本的停止點執行。 如需在協調流程中使用圖形的詳細資訊,請參閱 協調流程圖形

協調流程可設定為在一個以上的伺服器中執行。 在某個協調流程執行個體已經凍結之後,可以在這些伺服器中的任何一個將它解除凍結。 如果某個伺服器關閉,則引擎會在其他伺服器中,從它先前的狀態繼續執行協調流程。 引擎也會利用此功能,實作伺服器之間的負載平衡。

下一步