9.1.1 システム設計
(1) サーバ構成
フロントエンドサーバ,ディクショナリサーバ及びバックエンドサーバをそれぞれ一つのサーバマシンに配置するのが,HiRDB/パラレルサーバの基本的なサーバ構成です。ただし,各サーバマシンのCPUの処理負荷が高くない場合,一つのサーバマシンに複数のサーバを配置してもかまいません。一つのサーバマシンに複数のサーバを配置すると,必要とする共用メモリが増加します。共用メモリが不足すると,ユニットが開始できなくなるため,メモリ所要量を十分見積もってください。
設置できるサーバ数の範囲を次の表に示します。
項目 |
設置できるサーバ数の範囲 |
---|---|
システムマネジャ数 |
1 |
フロントエンドサーバ数 |
1〜1,024 |
ディクショナリサーバ数 |
1 |
バックエンドサーバ数 |
1〜16,382 |
1ユニットに作成できるサーバ数 |
1〜34 |
(2) システムマネジャの設置
次に示す理由のため,システムマネジャを定義するサーバマシンはHiRDB管理者が運用しやすい場所に設置することをお勧めします。
-
HiRDB管理者はコマンドでHiRDBを操作しますが,大部分のコマンドはシステムマネジャを定義するサーバマシンから入力する必要がある
(3) フロータブルサーバの設置
HiRDBは結合処理のような複雑な検索処理をする場合,データベースを持たないバックエンドサーバを優先的に使用して,処理性能を向上します。サーバマシンに余裕があり,複雑な検索処理をする場合にフロータブルサーバの設置を検討してください。フロータブルサーバを設置する場合,作業表用ファイル用のHiRDBファイルシステム領域を作成してください。作業表用ファイル用のHiRDBファイルシステム領域の名称は,バックエンドサーバ定義のpdworkオペランドで指定します。
(4) フロントエンドサーバの複数化
SQL処理のCPU負荷が高く,一つのフロントエンドサーバで処理しきれない場合,フロントエンドサーバを複数設定します。これをマルチフロントエンドサーバといいます。マルチフロントエンドサーバについては,「マルチフロントエンドサーバの設定」を参照してください。
(5) HiRDB/パラレルサーバが使用するメモリ
HiRDB/パラレルサーバが使用するメモリについて説明します。
HiRDB/パラレルサーバは次に示すメモリを使用します。
-
共用メモリ
-
プロセス固有メモリ
(a) メモリ所要量
HiRDB/パラレルサーバが必要とするメモリ所要量をサーバマシンごとに見積もってください。HiRDB/パラレルサーバのメモリ所要量については,「HiRDB/パラレルサーバのメモリ所要量の見積もり」を参照してください。
(b) 共用メモリの割り当て先
HiRDBでは,共用メモリを次の場所に割り当てできます。
-
OSのページングファイル(仮想メモリ)
-
運用ディレクトリ下のファイル(初期設定)
共用メモリの割り当て先は,ページングファイルにすることを推奨します。
ページングファイルにする場合,仮想メモリを見積る必要がありますが,運用ディレクトリ下のファイルに割り当てる場合に比べて,NTFSのキャッシュフラッシュによる影響を受けにくくなります。
共用メモリの割り当て先は,pdntenvコマンドの-shmfileオプションで設定できます。pdntenvコマンドについては,マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。
(c) 共用メモリのページ固定
HiRDBでは,次に示す共用メモリを実メモリ上に固定できます。
-
ユニットコントローラ用共用メモリ
-
グローバルバッファ用共用メモリ
-
動的変更したグローバルバッファが使用する共用メモリ
-
インメモリデータバッファ用共用メモリ
共用メモリを実メモリ上に固定すると,ページの入出力が少なくなるため,性能が安定します。
- 前提条件
-
共用メモリのページ固定をするための前提条件を次に示します。
- Windowsのバージョン
-
Windowsでは,Large Pageの機能を使用してページ固定をします。そのため,Large PageがサポートされているバージョンのWindowsであることが前提となります。Windowsがページ固定に対応しているかどうかは,pdntenv -osコマンドで確認してください。
- ページロックの権限
-
共用メモリのページ固定をする場合,メモリ内のページをロックできる権限が必要です。サービス実行時に使用するログオンのアカウントによって,この権限の有無が異なります。権限の設定方法を次に示します。
サービス実行時に使用するログオンのアカウント
権限の設定方法
HiRDB管理者
HiRDB管理者を,OSの[ローカル セキュリティ設定]−[ローカル ポリシー]−[ユーザー権利の割り当て]で,「メモリ内のページのロック」に設定してください。
ローカルシステムアカウント
ローカルシステムアカウントにはメモリ内のページをロックできる権限があります。そのため,権限の設定は必要ありません。
- 動作環境の設定
-
共用メモリのページ固定をするには,共用メモリの割り当て先の指定が必要です。pdntenvコマンドの-shmfileオプションでpageを指定し,共用メモリの割り当て先をページングファイル(仮想メモリ)に設定してください。
- ページ固定の方法
-
共用メモリのページ固定の方法について,共用メモリの種別ごとに説明します。
-
ユニットコントローラ用共用メモリ
システム共通定義,又はユニット制御情報定義のpd_shmpool_attributeオペランドにfixedを指定します。
-
グローバルバッファ用共用メモリ
システム共通定義,又はユニット制御情報定義のpd_dbbuff_attributeオペランドにfixedを指定します。
-
動的変更したグローバルバッファが使用する共用メモリ
システム共通定義,又はユニット制御情報定義のpd_dbbuff_attributeオペランドにfixedを指定します。これによって,pdbufmodコマンドを実行して動的変更したグローバルバッファが使用する共用メモリも実メモリ上に固定されます。
-
インメモリデータバッファ用共用メモリ
pdmemdbコマンドの-pオプションにfixedを指定します。
- 注意事項
-
実メモリ上に連続した領域が確保できなかった場合,共用メモリのページ固定ができません。ページ固定に失敗した場合のHiRDBの動作を次に示します。
- ユニットコントローラ用,又はグローバルバッファ用共用メモリの場合
-
ページ固定をしないで共用メモリを確保し処理を続行します。
- 動的変更したグローバルバッファが使用する共用メモリ,又はインメモリデータバッファ用共用メモリの場合
-
HiRDB,又はコマンドが異常終了します。
-
(d) 共用メモリ再利用機能
HiRDBでは,ユニットコントローラ用共用メモリと,グローバルバッファ用共用メモリをHiRDB開始時に確保します。これらの共用メモリの解放有無は共用メモリ再利用機能の適用有無で制御できます。
共用メモリ再利用機能を適用しない場合,HiRDB停止後にHiRDBを開始する際,前回稼働時に使用していた共用メモリを解放し,新たに共用メモリを確保します。共用メモリのページ固定を使用している場合は,メモリの断片化によって,物理メモリが確保できなくなり,HiRDBの開始に失敗したり,共用メモリのページ固定に失敗したりすることがあります。
共用メモリ再利用機能を適用する場合,HiRDB停止後にHiRDBを開始する際,前回稼働時に使用していた共用メモリを解放せずに再利用します。これによって,共用メモリ確保失敗によるHiRDBの開始失敗を防げます。
共用メモリ再利用機能は,次に示す共用メモリに適用できます。
-
ユニットコントローラ用共用メモリ
-
グローバルバッファ用共用メモリ
-
動的変更したグローバルバッファが使用する共用メモリ
- 共用メモリ再利用機能の適用方法
-
システム共通定義,又はユニット制御情報定義のpd_shm_reuseオペランドにYを指定します。
注意事項
-
共用メモリ再利用機能を適用すると,ユニットコントローラ用共用メモリ及びグローバルバッファ用共用メモリのサイズが大きくなります。「ユニットコントローラが使用する共用メモリの計算式」及び「グローバルバッファが使用する共用メモリの計算式」を参照して共用メモリ所要量を見積もってください。
-
共用メモリ再利用機能を適用すると,HiRDBが停止した状態でのメモリ使用量がグローバルバッファ用共用メモリのサイズ分多くなります。HiRDBが停止した状態でのメモリ使用量を削減する場合は,OSを再起動してください。
-
動的変更したグローバルバッファが使用する共用メモリは,前回稼働時に確保した共用メモリサイズと同一サイズになるようなグローバルバッファ定義を追加し,HiRDBを開始した場合に再利用します。
-
次に示すどちらかの運用をしてからHiRDBを開始すると,ユニットコントローラ用共用メモリとグローバルバッファ用共用メモリを解放し,再度確保します。その際,メモリ不足によってHiRDBの開始に失敗する場合や共用メモリのページ固定に失敗する場合もあります。この場合は,OSを再起動してください。
-
定義変更によって,ユニットコントローラ用共用メモリのサイズが変更になる。
-
HiRDBサービスを開始又は再起動する。
-
-
次に示すどれかの運用をしてからHiRDBを開始すると,グローバルバッファ用共用メモリを解放し,再度確保します。その際,メモリ不足によってHiRDBの開始に失敗する場合や共用メモリのページ固定に失敗する場合もあります。この場合は,OSを再起動してください。
-
SHMMAXオペランドの値を変更する。
-
サーバ名(pdstartオペランドの-sオプション指定値)を変更する。
-
-
影響分散スタンバイレス型系切り替え機能を適用したユニットのユニット名(pdunitオペランドの-uオプション指定値)を変更する。共用メモリのページ固定に失敗した場合,ページ固定していない共用メモリを再利用し続けることがあります。共用メモリ再利用機能を適用してもページ固定に失敗した場合は,OSを再起動し,KFPO00107-E(shmget(omminit(fixed)))又はKFPH23045-Wメッセージの対処を実施した後に共用メモリ再利用機能を適用してください。