CM Server 受管理 Connection Factory 的生命週期管理

這個主題說明 CM Server 的生命週期管理作業。

CM Server 會使用兩個 J2C 受管理 Connection Factory(一個用於 ClearCase, 一個用於 ClearQuest)來啟動及控制與 ClearCase 和 ClearQuest 核心產品通訊的後端伺服器程序。後端 ONCRPC 程序(用於 ClearCase 的 ccrpc 程序和用於 ClearQuest 的 cqrpc 程序)會搭起 CM Server 的 J2EE 和 WebSphere 元件以及 ClearCase 和 ClearQuest 核心元件之間溝通的橋樑。

CM Server 會執行許多背景作業來協助管理及控制每一個已啟動之後端 ONCRPC 伺服器程序的完整生命週期;不需要管理者介入即可執行這些作業。

有一個一般的生命週期作業會執行非產品專屬的生命週期管理, 而產品專屬的作業則會控制 ClearCase 和 ClearQuest 後端伺服器的物件行為。每一項作業都會使用可配置的 MBean 屬性來協助控管作用中伺服器物件的數目和壽命, 以協助維持系統處理工作量的能力,並避免效能因過度耗用資源而降低。 請參閱設定可用的 MBean 屬性以取得 MBean 屬性的相關資訊,以及配置的方式。

一般受管理 Connection Factory 的生命週期管理

一般生命週期管理作業會影響 Connection Factory 所建立的所有後端 ONCRPC 程序。這項作業會在一開始啟動 CM Server 時, 從 CM Server 內啟動。該作業會每隔兩分鐘執行一次, 且會負責測試每一部後端 ONCRPC 伺服器,以確定每一部伺服器的後端程序都仍然運作正常, 並清除已終止的殘餘伺服器程序。

每次執行作業時,都會取得由 CM Server 啟動且標示為「執行中」之後端伺服器物件的控點清單。每一個後端伺服器物件都會經過測試, 以確定能運作的後端程序正在執行中。如果系統偵測到任何後端程序故障, 即會以下列方式起始伺服器物件的清除作業(日誌訊息會記錄這類事件):
  • 伺服器物件會標示為無法運作,使得新的工作不會提供給該部伺服器。
  • 將 MBean 清除通知加入佇列,並在 5 秒內非同步接收此通知; 並對無法運作的伺服器物件執行所有清除工作。
  • 該伺服器物件會從母項受管理 Connection Factory 的伺服器物件清單中移除。
  • 與該伺服器關聯的 MBean 會取消登錄。

接下來,該作業會取得更新的「停止中」伺服器(閒置的伺服器會以這種方式標示)清單。針對處於「停止中」狀態至少 30 秒的每一個伺服器物件, 系統會檢查該伺服器物件的後端程序,以確定該程序實際上已停止。如果伺服器物件的程序尚未停止, 該程序會被強制停止,並從 Factory 的伺服器清單中移除。尚未處於「停止中」至少 30 秒的伺服器則會留在 Factory 的伺服器清單中, 並在下次執行這項作業時加以檢查。

產品專屬的受管理 Connection Factory 的生命週期管理作業

除了一般生命週期管理作業之外, 還有一個獨立的 ClearCase 作業和獨立的 ClearQuest 作業會控制其個別後端伺服器程序的產品專屬生命週期管理作業。

ClearQuest 後端 oncrpc 伺服器(稱為 cqrpc 程序)是個多緒程序; 在任何給定的時間,通常會有少量的 cqrpc 程序在執行中。ClearCase 後端 oncrpc 伺服器(稱為 ccrpc 程序)是個單一執行緒程序;在任何給定的時間,通常會有許多這些程序在執行中。產品專屬的受管理 Connection Factory 會使用可配置的 MBean 屬性來協助控管作用中程序的數目和壽命, 以協助維持系統處理工作量的能力,同時避免效能因過度耗用資源而降低。

有一些主要 MBean 屬性會用來控管啟用的 ccrpc 程序數; 這些參數的預設值可能需要根據已安裝 CM Server 的系統類型、預期的伺服器使用情形(根據負載和容量)加以修改:
  • CcServerFactoryMBean.serverThresholdCount MBean 屬性是 CCRPC 伺服器的臨界值數目, 一旦達到這個數目,即會在 ClearCase 受管理 Connection Factory 內觸發行內生命週期管理。
  • CcServerFactoryMBean.maxServerCount MBean 屬性是一次可在 ClearCase 受管理 Connection Factory 內建立的 CCRPC 伺服器數目上限。
  • CcServerFactoryMBean.maxServersPerCredential MBean 屬性會限制用戶端應用程式, 使得每一單一使用者階段作業不會建立太多執行緒。

這些值可以利用 wsadmin 指令行公用程式來調整。請參閱設定可用的 MBean 屬性以取得 MBean 屬性的相關資訊,以及配置的方式。記憶體大小、處理器速度和其他系統屬性之類的參數, 會控管應該如何設定這些以及其他 CcServerFactoryMBean 值。

當 ClearCase 要求從用戶端送至 CM Server 時, 會嘗試取得後端伺服器物件來處理要求。對於每一個送達的要求,會執行下列行內檢查:
  • 系統會檢查 ClearCase 伺服器物件的清單是否有不繁忙的伺服器可處理此要求。如果伺服器物件正在處理另一個要求,即會視為繁忙。如果有現有的伺服器物件不繁忙且符合要求的認證, 即會由該伺服器物件來處理此要求。
  • 如果沒有現有的伺服器物件符合認證,或現有的伺服器物件都很忙碌,則需要建立新的伺服器物件並與該要求相關聯; 這只有在受管理 Connection Factory 有容量時才能執行,方法如下:
    • 如果已達 ccrpc 伺服器的 CcServerFactoryMBean.maxServersPerCredential 數目, 或是已達 ccrpc 伺服器的 CcServerFactoryMBean.maxServerCount 數目, 則指派來處理用戶端要求的工作程式執行緒會進入「等待並重試」的迴圈; 系統最多會嘗試 TeamServerMBean.maxProcureServerAttempts 次,總計最多 TeamServerMBean.procureServerInterval 秒來取得伺服器。
    • 如果無法取得伺服器,則會拒絕用戶端要求。(否則會建立新的伺服器物件,並指派至該要求。)

除了在每一個要求送達時執行上述行內檢查之外,有一個 ClearCase 專屬的背景生命週期管理作業還會執行下列子作業:

每隔兩分鐘會建立一份已閒置 CcServerFactoryMBean.idleServerInterval 秒以上的所有 ccrpc 伺服器清單, 且這份清單中的每一部伺服器都會依下列方式溫和停止:
  • 伺服器實例會處於「停止中」狀態,使得新的工作不會提供給該部伺服器。
  • 將 MBean「終止」通知加入佇列,並在 5 秒內非同步接收此通知; 並執行該伺服器物件的所有清除作業。
  • 一則關閉 RPC 訊息會傳給 ccrpc 伺服器程序,且伺服器實例會設為「已停止」狀態。
  • 記錄現行時間並儲存在伺服器實例中,使得一般 CheckServer 作業可以知道伺服器處於「已停止」狀態多久。
  • 該伺服器物件實例會從 Connection Factory 的伺服器清單中移除。
  • 與該伺服器關聯的 MBean 會取消登錄。
ClearQuest 生命週期管理是由一個每兩分鐘執行一次的背景作業, 以及一些在處理要求時會進行的「每一用戶端要求前景檢查」所組成。系統會執行這些檢查,來判斷是否已達任何重要的資源限制:
  • 如果已啟用時間型回收(亦即,如果 CqServerFactoryMBean.recycleServerLifetimeLimit 大於零, 且任一 cqrpc 伺服器物件已執行了至少該時間量),則 cqrpc 伺服器物件會標示為已可回收。
  • 當用戶端要求完成時,會進行檢查以判斷 cqrpc 伺服器物件是否已處理至少 CqServerFactoryMBean.recycleServerOncrpcCallLimit 個 RPC 呼叫。若是如此,則 cqrpc 伺服器物件會標示為已可回收。
  • 當用戶端要求送達且階段作業數目增加時, 會進行檢查以判斷 cqrpc 伺服器物件是否已建立至少 CqServerFactoryMBean.recycleServerHttpSessionLimit 個 HTTP 階段作業。若是如此,則 cqrpc 伺服器物件會標示為已可回收; 在此情況下,會啟動新的 cqrpc 伺服器物件來處理送入的要求。

ClearQuest 受管理 Connection Factory 會回收 cqrpc 伺服器物件而非加以終止(因為 ClearCase 受管理 Connection Factory 會針對不再需要的 ccrpc 伺服器物件來執行)。這個狀況的原因是, cqrpc 伺服器物件可能包含尚未確定的查詢或記錄之類的項目; 因此針對等待確定的擱置中工作允許使用寬限期。

回收 cqrpc 伺服器物件是由以下作業所組成:
  • 伺服器物件會處於「停止中」狀態(也稱為「回收中」狀態),使得新的工作不會提供給該部伺服器。
  • 將一則 MBean「回收」通知加入佇列。該通知會在 5 秒內非同步接收; 當該階段作業的下一個要求送達時, 與該伺服器物件關聯的任何「唯讀」階段作業都會標示為與新的伺服器物件重新關聯。

    正在進行「讀寫」交易(亦即,需要確定查詢或記錄的交易)的階段作業允許最多 CqServerFactoryMBean.recyclingPeriod 秒鐘來確定擱置的工作。一旦確定工作或是到達 CqServerFactoryMBean.recyclingPeriod 之後, 伺服器物件就會進入「已停止」狀態,接著終止其後端程序, 並從 ClearQuest 受管理 Connection Factory 的伺服器清單中移除該伺服器物件。


意見