スケジュールサービス定義
形式
set形式
〔set scd_server_count=最大ユーザサーバ数〕
〔set scd_hold_recovery=Y|F〕
〔set scd_hold_recovery_count=閉塞状態の引き継ぎが必要なサーバ,および
サービスの合計数〕
〔set scd_port=スケジュールサービスのポート番号〕
〔set scd_this_node_first=Y|N〕
〔set scd_announce_server_status=Y|N〕
〔set max_socket_descriptors=ソケット用ファイル記述子の最大数〕
〔set schedule_rate=スケジュール比率〕
〔set scd_retry_of_comm_error=リトライ回数〕
〔set scd_advertise_control=BEFORE|AFTER〕
〔set scd_message_level=1|2〕
〔set ipc_tcpnodelay=Y|N〕
〔set watch_time=最大応答待ち時間〕
コマンド形式
{{scdbufgrp -g スケジュールバッファグループ名
{〔-e メッセージ格納バッファプール長〕|
〔-n メッセージ格納バッファセル数〕}
〔-l メッセージ格納バッファセル長〕
{〔-s メッセージ格納バッファ使用制限サイズ〕|
〔-p メッセージ格納バッファ使用制限率〕}}}
{{scdmulti 〔-m マルチスケジューラデーモン数〕
〔-p ポート番号〕
〔-g マルチスケジューラグループ名〕
〔-t〕}}
機能
OpenTP1システム環境下で動作するサーバへのサービス要求のスケジューリングをするための実行環境を定義します。
スケジュールサービスはOSのメッセージ機能を使用して,スケジュールキューをサービスグループ単位に作成します。
説明
set形式のオペランド
●scd_server_count=最大ユーザサーバ数
~〈符号なし整数〉((0~4096))《32》
スケジュールサービスを利用して動作するユーザサーバ数の最大値を指定します。
オンライン時に,サーバ起動コマンド(dcsvstart)で起動するユーザサーバの数も含めて指定します。
●scd_hold_recovery=Y|F
~《Y》
システムを全面回復する場合に,ユーザサーバの閉塞状態を引き継ぐかどうかを指定します。
閉塞状態のサーバまたはサービスの数がスケジュールサービス定義のscd_hold_recovery_countオペランドの指定値を超えた場合,超えた分のサーバまたはサービスの閉塞状態は引き継ぎません。またscd_hold_recovery_countオペランドに0を指定した場合も引き継ぎません。
SPPのソケット受信型サーバ,SUP,およびMHPの場合は,指定する必要はありません。scd_hold_recoveryオペランドの指定と,ユーザサービス定義,ユーザサービスデフォルト定義のhold_recoveryオペランド,システム環境定義のstart_scheduling_timingオペランド,スケジュールサービス定義のscd_hold_recovery_countオペランドの指定の関係を,次の表に示します。
各オペランドの指定値 | OpenTP1の閉塞引き継ぎ処理 | |||
---|---|---|---|---|
start_scheduling_timing | hold_recovery | scd_hold_recovery_count | scd_hold_recovery | |
AFTER | Y | 0 | - | × |
0以外 | - | ○ | ||
N | 0 | - | × | |
0以外 | - | × | ||
BEFORE | Y | 0 | - | × |
0以外 | Y | × | ||
F | ○ | |||
N | 0 | - | × | |
0以外 | - | × |
●scd_hold_recovery_count=閉塞状態の引き継ぎが必要なサーバ,およびサービスの合計数
~〈符号なし整数〉((0~58240))《64》
システムを全面回復するときに,閉塞状態を引き継ぐことが必要なサーバ,およびサービスの合計数を指定します(指定値は,偶数になるように切り上げられます)。
ユーザサービス定義でservice_holdオペランドにNが指定されたサーバは,一つのサーバとして数えます。service_holdオペランドにYが指定されたサーバは,そのサーバが持つサービス数を数えて合計数を指定してください。ただし,service_holdオペランドにYが指定されていても,ユーザサービス定義でholdオペランドにNが指定され,かつservice_term_watch_timeオペランドに0が指定された場合は,一つのサーバとして数えます。
閉塞状態のサーバ,またはサービスの数がこの指定値を超えた場合,超えた分のサーバ,またはサービスの閉塞状態は引き継がれません。0を指定した場合も引き継がれません。
システムを全面回復するとき,前回のオンライン処理のときに指定した値が引き継がれます。ただし,前回,または今回の指定値が0の場合は,指定値は引き継がれません。
0以外を指定した場合は,閉塞情報がステータスファイルに格納されるので,指定値に応じてステータスファイルの容量を見積もる必要があります。指定値が小さいと,ステータスファイル内で閉塞情報の書き換え処理が多く発生します。
このオペランドの指定値によって,システム共通定義のrpc_max_message_sizeオペランドの指定値を変更する必要がある場合があります。次の計算式の算出値が1より大きい場合(2~8の場合)は,算出値以上の値をrpc_max_message_sizeオペランドに指定してください。
rpc_max_message_sizeオペランドの指定値を変更する場合は,rpc_max_message_sizeオペランドの説明を参照してください。
●scd_port=スケジュールサービスのポート番号
~〈符号なし整数〉((5001~65535))
スケジュールサービスのポート番号を指定します。
このオペランドの指定を省略した場合,システムが任意に割り当てたポート番号で起動します。
このオペランドで指定するポート番号は,ほかのプログラムと重複しないようにしてください。
また,OSには任意に割り当てる番号がありますが,この番号も使用しないでください。OSが任意に割り当てる番号は,OSの種別やバージョンによって異なります。詳細については,使用しているOSのマニュアルを参照してください。
●scd_this_node_first=Y|N
~《N》
要求されたサーバが自ノードにある場合に,自ノードのサーバを優先してスケジュールするかどうかを指定します。
このオペランドでYを指定し,scd_announce_server_statusオペランドでNを指定すると,自ノードのサーバがスケジュールできる状態なら,負荷状態に関係なく,必ず自ノードでスケジュールします。
●scd_announce_server_status=Y|N
~《Y》
自ノードのサーバの状態を,すべての他ノードに不定期で通知するかどうかを指定します。ノード間で負荷バランスを取る場合に指定します。
このオペランドでYを指定すると,同一サービスグループが複数ノードにある場合に,サーバの状態をノード間で通知し合うことで,負荷を考慮したノード間の負荷バランスが取れます。ただし,次のような場合には,Nを指定してください。
なお,このオペランドの指定は,分散処理するすべてのノードで同じにしてください。指定が異なるノードがあると,負荷が集中することがあります。
●max_socket_descriptors=ソケット用ファイル記述子の最大数
~〈符号なし整数〉((32~2032))
OpenTP1制御下のプロセス※でのソケット用に使用するファイル記述子の最大数を指定します。
OpenTP1制御下のプロセス※は,システムサーバやユーザサーバとの間で,ソケットを使用したTCP/IP通信でプロセス間の情報交換をしています。そのため,同時に稼働するUAPプロセスの数,および通信する他ノードの数によって,このオペランドを変更する必要があります。
ソケット用ファイル記述子の最大数の算出式を,次に示します。
このオペランドの指定が小さいと,OpenTP1制御下の他プロセスとのコネクションが設定できなくなるため,プロセスがKFCA00307-Eメッセージを出力して異常終了します。
指定値の優先順位は次のとおりです(1.>2.)。
ここで指定を省略した場合,システム共通定義の値を仮定します。
●schedule_rate=スケジュール比率
~〈符号なし整数〉((50~100))(単位:%)
TP1/Client/WまたはTP1/Client/Pのクライアント環境定義のDCSCDDIRECTオペランドにYを指定して,RPCをスケジューリングする際,サーバの負荷レベルがLEVEL0,およびLEVEL1のノードのうち,LEVEL0のノードへのスケジュール比率を指定します。
なお,この機能は,TP1/Extension 1をインストールしていることが前提です。TP1/Extension 1をインストールしていない場合の動作は保証できませんので,ご了承ください。
●scd_retry_of_comm_error=リトライ回数
~〈符号なし整数〉((0~128))《0》
サービス要求のスケジューリング時に通信障害が発生したとき,障害ノード以外へスケジューリングするリトライ回数を指定します。ただし,このオペランドの指定値が,サービス要求の対象となるサービスグループが起動しているノード数を上回っている場合は,サービス要求の対象となるサービスグループが起動しているノード数をリトライ回数の上限値とします。
0を指定した場合は,リトライしません。
なお,この機能は,TP1/Extension 1をインストールしていることが前提です。TP1/Extension 1をインストールしていない場合の動作は保証できませんので,ご了承ください。
●scd_advertise_control=BEFORE|AFTER
~《BEFORE》
システム共通定義のall_nodeオペランドに指定されたノードに対し,ユーザサーバ起動時にネーム情報を通知するタイミングを変更します。
●scd_message_level=1|2
~《2》
このオペランドに1を指定すると,メッセージ格納バッファプールのメモリ不足が発生した場合に出力されるKFCA00854-Eメッセージの出力を抑止できます。
●ipc_tcpnodelay=Y|N
~《N》
OpenTP1がノード間で使用する通信ソケット(INETドメイン)に,TCP_NODELAYオプションを使用するかどうかを指定します。
TCP_NODELAYオプションを使用すると(このオペランドにYを指定すると),Nagleアルゴリズムが無効になるので,送信済みデータの応答待ちの状態でも遅延させることなくデータを送信できます。ただし,TCP_NODELAYオプションを使用することで,INETドメイン通信時の送信効率が低下し,ネットワークの負荷が大きくなる場合があります。このオペランドを指定する場合は,ipc_sendbuf_sizeオペランド,ipc_recvbuf_sizeオペランド,ネットワークの帯域などを考慮し,この機能の必要性を十分に検討してください。
●watch_time=最大応答待ち時間
~〈符号なし整数〉((0~65535))(単位:秒)
RPCによってプロセス間で通信する場合,サービス要求を送信してからサービスの応答が返るまでの待ち時間の最大値を指定します。
OpenTP1の終了処理で,このオペランドで指定した時間だけ終了処理を待ち合わせる場合があります。したがって,大きな値を指定した場合,OpenTP1の終了処理に時間が掛かる場合があります。
指定時間を過ぎても応答がない場合は,RPCは送受信タイムアウトとしてエラーリターンします。
0を指定した場合は,応答を受信するまで待ち続けます。0を指定した場合,OpenTP1が終了しない場合があります。
省略した場合は,システム共通定義のwatch_timeオペランドの値を仮定します。
このオペランドは,システム共通定義のwatch_timeオペランドのデフォルト値で使用してください。
特別なチューニングを必要とする場合以外は,このオペランドの内容を変更しないことをお勧めします。
システム共通定義のwatch_timeオペランドのデフォルト値よりも,極端に小さな値または大きな値を指定すると,OpenTP1ダウンに至る障害が発生する場合がありますので,ご注意ください。
コマンド形式
次ページ以降に記述しています。