Liberty 最佳化本端配接器的效能注意事項
依照 WebSphere® 最佳化本端配接器 (WOLA) API 的設計,它們能在外部位址空間與 Liberty for z/OS® 上的應用程式之間進行呼叫時,提供最佳效能。API 建立了新類型的應用程式型樣,支援在這些環境中的應用程式之間進行精細的互動。您可以為您的系統選擇最佳的配置選項,將使用最佳化本端配接器所獲致的效能優點發揮到最大。
針對登錄 API 呼叫,選取連線數下限和上限值
如果為登錄 API 呼叫選取的連線數下限值太大時,可能降低效能。因為每一條建立的連線會保留到呼叫取消登錄 API 為止,連線數下限值如果太大,會耗用更多記憶體,並增加完成每一項登錄和取消登錄 API 呼叫所需要的時間。請根據您的需求,選取最小的連線數下限值;例如,如果可能會有上百條並行執行緒共用一筆登錄,一旦連線數下限值較大,可以預想到,登錄時所需的記憶體和時間會更多。如果您預期並行執行緒不多,請設定一個較小的連線數下限值。
當用戶端要求連線時,如果用戶端必須等待連線,一旦選取的連線數上限值太小,也可能降低效能。當超過連線數上限值時,呼叫端執行緒會根據取得連線、呼叫、接收要求(任何)或主機服務 API 等待時間參數中指定的秒數,等待連線變成可用。一旦過了此時間,會傳回回覆碼和原因碼,指出無法在過了等待時間之前,為要求取得連線控點。請選取一個最符合您所預料的環境需求的連線數上限值。
在啟動 CICS 鏈結伺服器時選取連線數上限值
當您在「客戶資訊控制系統 (CICS®)」之下啟動鏈結伺服器作業,但卻沒有指定連線數下限 (MNC) 和連線數上限 (MXC) 參數時,MNC 會預設為 1,MXC 會預設為 10。MXC 參數值指定可讓鏈結伺服器作業 (BBO$) 啟動並同時執行的鏈結呼叫作業 (BBO#) 數目。如此一來,此值也會限制 Liberty 伺服器中可以執行和啟動 CICS 目標程式的並行執行緒數目。
選取 MXC 值時,其值必須能反映在這個鏈結伺服器實例之下啟動之一般 CICS 目標程式的預期持續時間。例如,如果 CICS 目標程式大多長時間執行,為了讓要求從 Liberty 伺服器有效率地流往 CICS,適合設定一個較大的 MXC 值。如果目標程式存活時間短,較小的 MXC 值更有效率。
共用 64 位元記憶體
當在 Liberty 伺服器中啟用最佳化本端配接器特性時,伺服器會取得 32 MB 共用記憶體,在 z/OS 中,此記憶體位於 2 GB 列上方。此記憶體供具有相同 wolaGroup 名稱的所有 Liberty 伺服器共用,並且儲存共用的最佳化本端配接器控制結構。
位於 2 GB 列上方的其他共用記憶體,則配置用來儲存用戶端與 Liberty 伺服器之間所傳遞的訊息。傳遞訊息所需的儲存體量,取決於所傳遞訊息的平均大小,並且必須有足夠的共用記憶體,來保留任何時刻所存在的所有訊息資料。會視需要配置其他的記憶體。
如果應用程式會繼續呼叫「登錄 API」並形成迴圈,而不會呼叫「取消登錄 API」且不會終止(如此做會自動清除這些登錄),則可能會使 WOLA 群組的最佳化本端配接器共用記憶體緩衝區溢位。如果發生此情況,API 呼叫會返回並帶有「記憶體不足」原因碼。
您可以計算以粗估您應用程式需要的 WOLA 共用記憶體量。每一項用戶端登錄會耗用 384 個位元組的共用記憶體,外加每一條連線需要 192 個位元組的共用記憶體。登錄加上最多 100 條的連線,約耗用 20 KB 的共用記憶體。如果所有連線都在使用中,用戶端執行緒必須等待連線變成可用,而每一個用戶端執行緒會另外耗用 80 個位元組。登錄所管理的每一項服務會另外耗用 384 個位元組。
200 筆登錄 x 384 個位元組 = 76,800 個位元組 200 筆登錄 x 200 條連線 x 192 個位元組 = 7,680,000 個位元組 200 筆登錄 x 1000 等待者 x 80 個位元組 = 16,000,000 個位元組 ----------------------------------------------------------------- 23,756,800 個位元組 33,554,432 個位元組 – 23,756,800 個位元組 = 剩餘 9,797,632 個位元組 / 每一項服務需 384 個位元組 ----------------------------------------------------------------- 25,514 項服務
最佳化本端配接器 CICS 鏈結伺服器的效能注意事項
您可以將最佳化本端配接器用於 CICS 鏈結伺服器,如此就能輕輕鬆鬆從正在 Liberty 伺服器上執行的應用程式,呼叫現有的 CICS 應用程式。當您啟動鏈結伺服器時,最佳化本端配接器的鏈結伺服器作業 (BBO$) 就會啟動,並接收來自 Liberty 伺服器的程式鏈結要求。當收到鏈結要求時,鏈結伺服器作業 (BBO$) 會起始程式鏈結作業 (BBO#),程式鏈結作業繼而發出 EXEC CICS LINK 指令給目標程式,接收回應,然後將回應傳送給 Liberty 伺服器呼叫端。為了執行這些動作,會在 BBOC START_SRVR 指令中設定 SEC=Y 參數,以便將 Liberty 伺服器上的應用程式執行緒層次身分,傳播並主張於 CICS 目標作業中。
如果您在執行鏈結伺服器時使用 REU=Y,程式鏈結作業 (BBO#) 會維持作用中,直到針對登錄輸入 BBOC STOP_SRVR 或 UNREGISTER 指令為止。如果您也在執行時,使用較大的連線數上限 (MXC) 值,當有大量的要求同時送達時,作用中的程式鏈結作業 (BBO#) 數目可能到達 CICS 並行作業數上限臨界值。如需設定 CICS 並行作業數上限臨界值的相關資訊,請參閱您 CICS 版本的說明文件。
當您從 Liberty 伺服器,呼叫 CICS 之下的應用程式時,如果要達到最快效能,請直接在您的應用程式中編碼「主機服務 API」、「接收要求(任何)API」或「接收要求(特定)API」。不過,直接編碼 API,不會針對鏈結伺服器所提供的身分傳播,提供內建支援。
使用 JCA 資源配接器時的注意事項
當您使用最佳化本端配接器 JCA 資源配接器時,從 ConnectionFactory 物件取得的每一條連線都需要額外的記憶體負擔。如果您的應用程式使用相同的應用程式方法,對外部位址空間或 CICS 發出多項呼叫,您可以針對每一項互動使用相同的連線,以及在應用程式方法內使用相同的 JCA 互動物件,來達到較好的效能。
當您為最佳化本端配接器建立 JCA ConnectionFactory 物件時,您可以針對該 ConnectionFactory,修改 JCA 連線儲存區大小下限和上限。連線儲存區代表邏輯連線,這些連線會在互動期間,連結至您在呼叫「登錄 API」時所指定的實體連線。為取得最佳效能,請將 JCA 連線儲存區大小,設為您在「登錄 API」呼叫期間所設定的實體連線儲存區相同大小。如果您的 JCA 連線儲存區太小,即使有可用的實體連線,您的應用程式可能還得等待 JCA 連線物件。