這個主題說明 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 伺服器物件可能包含尚未確定的查詢或記錄之類的項目;
因此針對等待確定的擱置中工作允許使用寬限期。