20.3.1 Linuxのオペレーティングシステムパラメタの指定方法
ここでは,Linuxのオペレーティングシステムパラメタ(カーネルパラメタ)の見積もりについて説明します。オペレーティングシステムパラメタの値が小さいと,HiRDBが正しく動作しないことがあります。Linuxのオペレーティングシステムパラメタの指定値の目安を次の表に示します。
オペレーティングシステムパラメタ |
指定値の目安 |
オプション設定ファイル例※1 |
---|---|---|
hard nofile |
8192を指定してください。 |
/etc/security/limits.conf |
DefaultLimitNOFILE※2 |
8192を指定してください。 |
/etc/systemd/system.conf |
soft nofile |
HiRDBが計算して設定するため,指定する必要はありません。 |
− |
fs.aio-max-nr |
RHEL6以降で,システムログの並列化機能を使用する場合は(pd_max_server_process × 2)以上を指定してください。 このマシンに複数のHiRDB環境がある場合,HiRDBごとに計算して合計してください。 なお,この計算式で求めた値がパラメタのデフォルト値よりも小さいときはパラメタ値を変更する必要はありません。 |
/proc/sys/fs/aio-max-nr |
fs.file-max |
MAX{1600,320×(h−g−i)+[a+(b×c)+320]×g+848×i+h×2+227+k×m+C} 上記の計算式に,次の計算式を加えて求めた値以上を指定してください。 ●HiRDB/シングルサーバの場合 pd_max_users+pd_max_reflect_process_countの値 ●HiRDB/パラレルサーバの場合 (D+3×ユニット内サーバ数)×E D:ユニット内のサーバごとに次の計算式を実行して求めた値を合計してください。 バックエンドサーバの場合 pd_max_bes_process+pd_max_reflect_process_countの値 ディクショナリサーバの場合 pd_max_dic_process+pd_max_reflect_process_countの値 pd_max_bes_process又はpd_max_dic_processオペランドを省略している場合はpd_max_usersの値で計算してください。 ユニット内に複数のバックエンドサーバがある場合は,バックエンドサーバごとに計算してください。 E:16(排他待ちスレッド数) この計算式で求めた値が,システムの上限を超える場合は,システムの上限値を指定してください。 |
/proc/sys/fs/file-max |
nproc |
MAX(pd_max_server_processの値+e,512)以上を指定してください。 ただし,サーバマシン上で稼働するほかのプログラムが必要とする値の方が大きい場合は,その値を指定してください。 |
/etc/security/limits.conf |
DefaultLimitNPROC※2 |
MAX(pd_max_server_processの値+e,512)以上を指定してください。 ただし,サーバマシン上で稼働するほかのプログラムが必要とする値の方が大きい場合は,その値を指定してください。 |
/etc/systemd/system.conf |
threads-max |
MAX((pd_max_server_processの値+20),576)以上を指定してください。 |
/proc/sys/kernel/threads-max |
msgmnb |
「HP-UXのオペレーティングシステムパラメタの見積もり」の「●msgmnbの計算式」を参照してください。ここで求めた値以上を指定してください。ただし,マルチHiRDBの場合は,それらのHiRDBごとに求めた値の中で最大の値を指定してください。 |
/proc/sys/kernel/msgmnb |
msgmni |
サーバマシン上で稼働する全プログラムが必要とするメッセージキュー識別子数を指定します。HiRDBが必要とするメッセージキュー識別子数については,「メッセージキュー及びセマフォ所要量の見積もり」を参照してください。そこで求めた値を加算してください。 |
/proc/sys/kernel/msgmni |
SEMMNI |
サーバマシン上で稼働する全プログラムが必要とするセマフォ識別子数を指定します。HiRDBが必要とするセマフォ識別子数については,「メッセージキュー及びセマフォ所要量の見積もり」を参照してください。そこで求めた値を加算してください。 推奨値は1024以上です。 |
/proc/sys/kernel/semの第4パラメタ |
SEMMNS |
サーバマシン上で稼働する全プログラムが必要とするセマフォ数を指定します。HiRDBが必要とするセマフォ数については,「メッセージキュー及びセマフォ所要量の見積もり」を参照してください。そこで求めた値を加算してください。 推奨値は7200以上です。 |
/proc/sys/kernel/semの第2パラメタ |
shmmax |
200000000以上で,MAX(p+q,r,s,t)よりも大きい値を指定してください。グローバルバッファの動的変更機能使用時は,追加するグローバルバッファのサイズを考慮し,設定値より追加分のサイズが大きくなる可能性があれば,予想される追加分のサイズを指定してください。 なお,HiRDBシステム定義のSHMMAXオペランドには,ここで求めたshmmaxの値以下を指定してください。 |
/proc/sys/kernel/shmmax |
shmmni |
2000以上を指定してください。
|
/proc/sys/kernel/shmmni |
SHMALL |
該当するサーバマシンでHiRDBが確保する共用メモリsiに,同一サーバマシンで稼働するほかのプログラムの共用メモリの所要量を加算して指定してください。 |
/proc/sys/kernel/shmall |
(凡例) −:該当しません。
- 注※1
-
使用しているOSのバージョン,及びカーネルのバージョンごとに異なります。使用しているOSのマニュアルを参照し,表中の指定値の目安で示した値を設定してください。なお,使用しているOSのバージョンによっては,設定が不要になります。使用しているOSで該当するカーネルパラメタが設定できない場合には,設定は不要です。
- 注※2
-
Red Hat Enterprise Linux(R) 7以降で指定してください。
a:データベース作成ユティリティで使用する入力データファイル数と分割入力データファイル数,又はデータベース再編成ユティリティで使用するアンロードデータファイル数
b:インデクスの横分割数の最大値(データベース作成ユティリティ,データベース再編成ユティリティ,又はリバランスユティリティの処理対象のインデクス)
c:インデクス数(データベース作成ユティリティ,データベース再編成ユティリティ,又はリバランスユティリティの処理対象のインデクス)
e:同時実行するコマンド(ユティリティを含む)の最大数
- g:次のどちらかの値
-
-
HiRDB/シングルサーバの場合:pd_max_usersオペランドの値+pd_max_reflect_process_countオペランドの値
-
HiRDB/パラレルサーバの場合:ユニット内の全バックエンドサーバ,ディクショナリサーバの次に示す値の合計値
pd_max_bes_processオペランドの値+pd_max_reflect_process_countオペランドの値
pd_max_dic_processオペランドの値+pd_max_reflect_process_countオペランドの値
-
h:pd_max_server_processオペランドの値
i:ユニット内のサーバ数
k:pd_max_usersオペランドの値+pd_max_reflect_process_countオペランドの値
- m:次のどちらかの値
-
-
HiRDB/パラレルサーバでユニット内にフロントエンドサーバがある場合:2
-
そのほかの場合:0
-
- n:データベース作成ユティリティ,データベース再編成ユティリティ,又はリバランスユティリティで,インデクス作成方法にインデクス一括作成モード若しくはインデクス情報出力モードを指定する場合,次の計算式の値
-
MIN(MAX(576,システム内のHiRDBサーバ数+448)+b×c,pd_max_open_fdsオペランドの最大値)
pd_max_open_fdsオペランドの最大値については,マニュアル「HiRDB Version 9 システム定義」を参照してください。
p:ユニットコントローラが使用する共用メモリの大きさ
q:シングルサーバ又は各サーバが使用する共用メモリの大きさ
r:HiRDBシステム定義のSHMMAXオペランドの指定値
- s:グローバルバッファが使用する共用メモリの見積もり値
-
グローバルバッファが使用する共用メモリの見積もりについては,HiRDB/シングルサーバの場合は「グローバルバッファが使用する共用メモリの計算式」を,HiRDB/パラレルサーバの場合は「グローバルバッファが使用する共用メモリの計算式」を参照してください。
- si:該当するサーバマシンでHiRDBが確保する共用メモリ
-
-
HiRDB/シングルサーバの場合
「ユニットコントローラが使用する共用メモリの計算式」で求めた値
+「シングルサーバが使用する共用メモリの計算式」で求めた値
+「グローバルバッファが使用する共用メモリの計算式」で求めた値
-
HiRDB/パラレルサーバの場合
「ユニットコントローラが使用する共用メモリの計算式」で求めた値
+「各サーバが使用する共用メモリの計算式」で求めた値
+「グローバルバッファが使用する共用メモリの計算式」で求めた値
-
- t:セキュリティ監査情報用バッファ用共用メモリの見積もり値
-
セキュリティ監査情報用バッファ用共用メモリの見積もりについては,HiRDB/シングルサーバの場合は「メモリ所要量の計算式」を,HiRDB/パラレルサーバの場合は「メモリ所要量の計算式」を参照してください。
- C:
-
HiRDB/シングルサーバの場合:MAX(256,(システム内HiRDBサーバ数+32))×(g+k)+(h−k)×MAX(システム内HiRDBサーバ数,ユニット数)
HiRDB/パラレルサーバの場合:MAX(256,(システム内HiRDBサーバ数+32))×(g+k)+(h−g−k)×MAX(システム内HiRDBサーバ数,ユニット数)
- 注意事項
-
TCPポートがTIME_WAIT状態となり,システム全体のTCPポートが不足し,トランザクションがエラーとなったり,HiRDBが異常終了したりすることがあります。このような現象が発生した場合,オペレーティングシステムパラメタの設定によって,ポート数不足の発生を回避してください。詳細については,「ポート数不足を回避する方法」を参照してください。
- 〈この項の構成〉
(1) Linux固有の指定
Linux版の場合,拡張されたインターネットサービスデーモン(以降,xinetdと表記)が起動していると,その設定ファイルであるxinetd.confなどで設定している値の調整が必要となります。
また,Red Hat Enterprise Linux(R) 7以降で,systemdのsocketユニットを構成してリモートシェルを使用する場合は,リモートシェルのsocketユニット構成ファイルに設定しているパラメタの調整が必要です。
それぞれのパラメタの指定値の目安を次の表に示します。
パラメタ |
指定値の目安 |
オプション設定ファイル例※1 |
---|---|---|
cps (1秒当たりに処理する接続数) |
1番目の引数に,次の値を指定してください。
|
/etc/xinetd.conf |
instances (サービスの同時実行最大値) |
cpsパラメタで計算した値の2倍を指定してください。 なお,計算した値がパラメタのデフォルト値よりも小さい場合は,パラメタ値を変更する必要はありません。 |
/etc/xinetd.conf |
MaxConnections※2 (サービスの最大値) |
cpsパラメタで計算した値の2倍を指定してください。 なお,計算した値がパラメタのデフォルト値よりも小さい場合は,パラメタ値を変更する必要はありません。 |
/etc/systemd/system/sockets.target.wants/rsh.socket |
- 注※1
-
使用しているOSのバージョン,及びカーネルのバージョンごとに異なります。xinetd.conf及び.socketファイルについては,OSのマニュアルを参照してください。
- 注※2
-
Red Hat Enterprise Linux(R) 7以降で,systemdのsocketユニットを構成してリモートシェルを使用する場合,[Socket]セクションに指定してください。
A:該当するマシンで起動するシングルサーバ数×4
B:pdcopy及びpdrstrの最大同時実行数×2
- C:該当するマシンで起動するディクショナリサーバ数
-
×HiRDBシステムに定義した全バックエンドサーバ数×6
+該当するマシンで起動するディクショナリサーバ数
×HiRDBシステムに定義した全バックエンドサーバ数×2
+該当するマシンで起動するバックエンドサーバ数×7
+該当するマシンで起動するディクショナリサーバ数×4
- D:pdcopy及びpdrstrの最大同時実行数
-
×(HiRDBシステムに定義したバックエンドサーバ数+4)
E1:同時に実行する運用コマンド及びユティリティの数×3
- E2:pdtrndecコマンドを実行する運用の場合は次の合計値,pdtrndecコマンドを実行しない運用の場合は0
-
該当するマシンにFESが存在する場合はpd_max_usersの値
該当するマシンにBESが存在する場合はpd_max_bes_processの値
該当するマシンにDSが存在する場合はpd_max_dic_processの値
(2) LinuxのHugepage機能の指定
Linux版のHiRDBでは,LinuxのHugepage機能を用いて,共用メモリを実メモリ上に固定できます。詳細については,HiRDB/シングルサーバの場合は「Hugepage機能を用いた共用メモリの固定」を,HiRDB/パラレルサーバの場合は「Hugepage機能を用いた共用メモリの固定」を参照してください。ここでは,LinuxのHugepage機能を有効にするときに指定するLinuxのオペレーティングシステムパラメタと,指定値の見積もり方法について説明します。
(a) Hugepage機能を有効にするときに指定するオペレーティングシステムパラメタ
Linuxのオペレーティングシステムパラメタの指定値の目安を次の表に示します。
オペレーティングシステムパラメタ |
指定値の目安 |
オプション設定ファイル例※ |
---|---|---|
vm.nr_hugepages |
下記「HiRDBが使用するhugepagesの最大ページ数の求め方」を参照して求めた値を指定してください。既に値が指定されていた場合は,既定値に求めた値を加算してください。 |
/etc/sysctl.conf |
vm.hugetlb_shm_group |
HiRDB管理者のグループIDを指定してください。 |
/etc/sysctl.conf |
soft memlock |
HiRDB管理者のユーザIDを対象とし,unlimitedを指定してください。 |
/etc/security/limits.conf |
hard memlock |
HiRDB管理者のユーザIDを対象とし,unlimitedを指定してください。 |
/etc/security/limits.conf |
注※ 使用しているOSのバージョン,及びカーネルのバージョンごとに異なります。使用しているOSのマニュアルを参照し,表中の指定値で示した値を指定してください。
(b) HiRDBが使用するhugepagesの最大ページ数の求め方
次に示す方法で算出してください。
(i)この機能を適用しないでHiRDBを開始します。
- (ii)HiRDBの開始完了後,pdls -d memコマンドを実行して,ユニットコントローラ用共用メモリと各グローバルバッファ用共用メモリの個々のサイズを確認します。
-
-
ユニットコントローラ用共用メモリのサイズ:
pdls -d memコマンドで表示されるSHM-OWNERの値が,MANAGERである共用メモリのACT-SIZEの値
-
各グローバルバッファ用共用メモリの個々のサイズ:
pdls -d memコマンドで表示されるSHM-OWNERの値が,次に示す文字列である共用メモリのACT-SIZEの値
-
影響分散スタンバイレス型系切り替え機能を適用するユニットの場合:
ユニット名を()で囲んだ文字列
-
影響分散スタンバイレス型系切り替え機能を適用しないユニットの場合:
サーバ名
-
- (iii)次に示す計算式を用いて,HiRDBが使用するhugepagesの最大ページ数を求めます。サーバマシン内にこの機能を適用するHiRDBシステムを複数構成している場合,各システムで値を算出し,その合計値を用いて計算してください。
HiRDBが使用するhugepagesの最大ページ数 = A+B+C+D
A…ユニットコントローラ用共用メモリが使用するhugepagesの最大ページ数
-
ユニットコントローラ用共用メモリにこの機能を適用する場合:
↑(ii)で求めたユニットコントローラ用共用メモリのサイズ÷ 2000000↑
-
ユニットコントローラ用共用メモリにこの機能を適用しない場合:0
B…グローバルバッファ用共用メモリが使用するhugepagesの最大ページ数
-
グローバルバッファ用共用メモリにこの機能を適用する場合:
n
Σ(↑(ii)で求めたグローバルバッファ用共用メモリのサイズ÷ 2000000↑)
i=1
n:(ii)で求めたグローバルバッファ用共用メモリの数
-
グローバルバッファ用共用メモリにこの機能を適用しない場合:0
C…グローバルバッファの動的変更で確保するグローバルバッファ用共用メモリが使用するhugepagesの最大ページ数
-
グローバルバッファの動的変更で確保するグローバルバッファ用共用メモリにこの機能を適用する場合:
システム共通定義のpd_max_add_dbbuff_shm_noオペランドの値
× ↑システム共通定義のSHMMAXオペランドの値 ÷ 2 ↑
-
グローバルバッファの動的変更で確保するグローバルバッファ用共用メモリにこの機能を適用しない場合:0
D…インメモリデータバッファが使用する共用メモリが使用するhugepagesの最大ページ数
-
インメモリデータバッファが使用する共用メモリにこの機能を適用する場合:
システム共通定義のpd_max_resident_rdarea_shm_noオペランドの値
× ↑ システム共通定義のSHMMAXオペランドの値 ÷ 2 ↑
-
インメモリデータバッファが使用する共用メモリにこの機能を適用しない場合:0
-