如果傳訊引擎配置成會使用資料儲存庫,但無法連接到它的資料儲存庫,例如,因為包含資料儲存庫的資料庫不在執行中,傳訊引擎就不會啟動。
您可以調整系統來增加傳訊引擎啟動成功的機會。
關於這項作業
在單一伺服器環境中,當您啟動應用程式伺服器時,會嘗試啟動傳訊引擎。
如果資料庫無法使用超出 15 分鐘,傳訊引擎可能會進入已停止狀態,必須以手動方式啟動。
在高可用性環境中,會在伺服器或叢集啟動之時啟動傳訊引擎,或在失效接手程序中啟動傳訊引擎。
在傳訊引擎啟動期間,傳訊引擎會嘗試連接資料儲存庫,依預設,最多可達 15 分鐘。
如果在這段時間內,存在下面說明的其中一個情況,就無法在伺服器上啟動傳訊引擎,伺服器會停用高可用性:
- 資料庫無法使用或不在執行中。
- 在失效接手狀況中,資料庫未偵測出失去原始應用程式伺服器的網路連線,因此,未將資料儲存庫解除鎖定。
這個已停用狀態可能會傳播到叢集的所有成員。
您必須手動重新啟用伺服器,以維護您的高可用性環境。
您可以在資料庫伺服器或應用程式伺服器上,配置各種參數來增加傳訊引擎順利啟動的機會,例如,15 分鐘的預設逾時值。
程序
- 在資料庫伺服器上,將作業系統配置成會能夠在最短時間內,偵測出應用程式伺服器網路連線遺失。 請參閱作業系統的文件,以取得詳細資料。
例如,下表列出 Windows 和 AIX® 作業系統的相關參數:
表 1. TCP/IP 參數. 表格的第一個直欄提供 Windows 作業系統的 TCP/IP 參數清單。
表格的第二個直欄提供 AIX 作業系統的 TCP/IP 參數清單。
第三個直欄提供參數的說明。Windows 作業系統上的參數名稱 |
AIX 作業系統上的參數名稱 |
說明 |
KeepAliveTime |
tcp_keepidle |
在傳送非作用中連線的 keepalive 要求之前,所等待的時間量(Windows 作業系統以毫秒為單位,AIX 作業系統以 0.5 秒為單位)。 |
KeepAliveInterval |
tcp_keepintvl |
等待回應的時間量(Windows 作業系統以毫秒為單位,AIX 作業系統以 0.5 秒為單位)。 |
TCPMaxDataRetransmissions |
tcp_keepcnt |
結束連線之前,要傳送的要求數目。 |
您可以利用下列公式來計算資料庫伺服器偵測應用程式伺服器連線失敗所花的時間總量:
偵測連線失敗的時間 = 保持作用中時間 +(保持作用中間隔 x 要求數目)
比方說,如果是依照下表來設定參數的 Windows 系統,資料庫伺服器偵測應用程式伺服器連線失敗所花的時間總量是 350 秒。
表 2. 範例參數值. 第一個直欄提供參數名稱。第二個直欄提供參數的範例值。參數 |
值 |
KeepAlive |
300000 毫秒 |
KeepAliveInterval |
10000 毫秒 |
TCPMaxDataRetransmissions |
5 |
您的資料庫產品可能也有相關參數可供配置,例如,DB2® for z/OS® 中的 IDLE THREAD TIMEOUT 參數。 當資料庫伺服器偵測到應用程式伺服器連線遺失時,資料庫會將資料儲存庫解除鎖定。
這時傳訊引擎可以存取資料儲存庫,因此,可以順利啟動。
- 在應用程式伺服器上,將傳訊引擎調整成會在適當的時間長度內,等待資料儲存庫成為可用。 依預設,傳訊引擎會在 15 分鐘內,每隔 2 秒嘗試連接資料儲存庫一次。
如果您想要調整這些計時,請完成這個步驟的其餘部分。
- 按一下 ,導覽至傳訊引擎的自訂內容畫面。
- 按一下新建。
- 在「名稱」欄位中輸入 sib.msgstore.jdbcInitialDatasourceWaitTimeout,在「值」欄位中輸入適當的值。 這個內容是等待資料儲存庫成為可用的時間(毫秒)。
預設值是 900000(15 分鐘)。這個時間包含與資料庫建立連線以及取得必要表格鎖定所需的時間。
請確定這個內容值大於步驟 1 所配置,資料庫伺服器偵測網路連線遺失所花的總時間。
- 按一下確定。
- 按一下新建。
- 在「名稱」欄位中輸入 sib.msgstore.jdbcStaleConnectionRetryDelay,在「值」欄位中輸入適當的值。 這個內容嘗試連接資料儲存庫的等待間隔(毫秒)。
預設值是 2000(2 秒)。 比方說,如果您將 sib.msgstore.jdbcInitialDatasourceWaitTimeout 內容設為 600000,將 sib.msgstore.jdbcStaleConnectionRetryDelay 內容設為 3000,傳訊引擎會每隔 3 秒連線一次,直到過了 10 分鐘。
- 按一下確定。
- 儲存對主要配置所做的變更。
- 重新啟動應用程式伺服器。
- 如果您有叢集,請重複先前的步驟來新增叢集內每一個傳訊引擎的這些內容。
結果
通過配置這些參數和自訂內容,您會將資料庫伺服器偵測網路連線遺失所花的時間縮到最短,且可確保傳訊引擎在嘗試啟動之前,會在合理的時間長度內等待資料庫連線回復。
下一步
您可能會想將傳訊引擎和伺服器配置成會在資料庫連線失敗事件中重新啟動。
這個行為可以降低在還原資料庫連線時,傳訊引擎狀態不一致的風險。