Symfoware/RDBを動作させるには、Symfoware/RDBの動作環境の定義に応じたカーネル資源を確保しておく必要があります。
Symfoware/RDBを動作させるために設定が必要なカーネル資源には、以下のものがあります。
共用メモリ資源
セマフォ資源
メッセージキュー資源
これらのカーネル資源の設定方法について、OS別に説明します。
なお、Symfoware Server Standard Editionの場合は初期インストール時にカーネル資源を自動で設定しますが、Symfoware Server Standard Editionで想定している以上の規模でシステムを構築する場合はカーネル編集が必要です。
参照
初期インストール時に自動で設定したカーネル資源の値およびSymfoware Server Standard Editionで想定しているシステム規模については、“インストールガイド(サーバ編)”を参照してください。
DBミラーリングシステムを利用する場合は、“データベース二重化導入運用ガイド”を参照し、カーネル資源の設定を行ってください。
プロジェクトデータベース(/etc/projectファイル)または、カーネル構成ファイル(/etc/systemファイル)のどちらか一方に設定します。システム全体で設定するファイルを統一することを推奨します。
注意
Symfoware Server Standard Editionを利用する場合は、プロジェクトデータベース(/etc/projectファイル)を利用してください。
プロジェクトデータベース(/etc/projectファイル)または、カーネル構成ファイル(/etc/systemファイル)に値が設定されている場合は、値を確認し、追加や変更を行ってください。プロジェクトデータベースおよび、カーネル構成ファイルに値が設定されていない場合は、OSのデフォルト値が使用されています。この場合には、OSのデフォルト値を基準にしてシステムで使用する構成ファイルへ追加や変更を行ってください。OSが使用している値は、sysdefコマンドまたはprctlコマンドにより表示できます。
sysdefコマンドまたはprctlコマンドの詳細については、OSのmanコマンドで確認してください。
各パラメタの説明で、“最大値”とあるパラメタについては、すでに設定されている値またはデフォルト値と比較して大きい方の値を設定し、“加算”とあるパラメタについては、すでに設定されている値またはデフォルト値に加算した値を設定してください。
“一括獲得方式”と“分割獲得方式”の選択基準については、“1.1.3 プロセス構成”を参照してください。
クラスタ環境の場合、クラスタシステムが推奨しているカーネルの編集方法で設定してください。
クラスタ環境は、global zoneで動作可能です。
プロジェクトデータベース(/etc/projectファイル)を利用する場合
プロジェクトデータベースを利用する場合は、system、user.rootおよび、defaultプロジェクトすべてに値を設定してください。なお、すでにユーザ定義のプロジェクトを作成している場合は、同様にユーザ定義のプロジェクトへも値を設定してください。また、プロジェクトデータベースを使用する場合は、以下を参照し、projmodコマンドを使用して値を設定してください。
Project名 | 概要 |
---|---|
system | OS起動時のデーモンやcronのプロセスが属するプロジェクト |
user.root | rootユーザが属するプロジェクト |
default | プロジェクトが未定義の一般ユーザが属するプロジェクト |
参照
プロジェクトデータベース内のパラメタの詳細は、システムベンダのドキュメントを参照してください。
共用メモリ資源の設定について説明します。
プロジェクトデータベース内のproject.max-shm-memory、project.max-shm-idsに以下の値をコマンドで設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
project.max-shm-memory | RDBEXTMEMの値 × 1024 (注1) | 加算 |
project.max-shm-ids | (ファンクションルーチン多重度 + 10) × 同時起動RDBシステム数 (注2) | 加算 |
注1) RDBEXTMEMの詳細は、“4.1 RDB構成パラメタファイルによる定義”を参照してください。
注2) ファンクションルーチン多重度は、ファンクションルーチンを同時に実行するアプリケーションのコネクション数です。
プロジェクトデータベース内のproject.max-shm-memory、project.max-shm-idsに以下の値をコマンドで設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
project.max-shm-memory | COMMUNICATION_BUFFERの値 × 1024 + 16384 (注1) | 加算 |
project.max-shm-ids | (クライアント多重度 + 10 + ファンクションルーチン多重度) × 同時起動RDBシステム数 (注2) (注3) | 加算 |
注1) COMMUNICATION_BUFFERの詳細は、“4.2 システム用の動作環境ファイルによる定義”を参照してください。上記の計算式で算出された値が物理メモリ量の1/4より小さい場合は、物理メモリ量の1/4以上の値を指定してください。
注2) クライアント多重度は、同時に実行するアプリケーションおよびRDBコマンドの数を規定する値となります。この値の概算方法は以下のようになります。
クライアント多重度 = 同時にローカルアクセスを行うすべてのアプリケーション のコネクション数の合計値 + 同時に実行するRDBコマンド数
注3) ファンクションルーチン多重度は、ファンクションルーチンを同時に実行するアプリケーションのコネクション数です。
セマフォ資源の設定について説明します。
プロジェクトデータベース内のproject.max-sem-ids、process.max-sem-nsemsに以下の値をコマンドで設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
project.max-sem-ids | 同時起動RDBシステム数 × 300 | 加算 |
process.max-sem-nsems | (RDBCNTNUM + 3) / 15 (注1) (注2) | 最大値 |
注1) RDBCNTNUMの詳細は、“4.1 RDB構成パラメタファイルによる定義”を参照してください。
注2) 割り切れない場合は、小数点以下を切り上げて設定してください。ただし、上記の計算式で算出された値が512より小さい場合には、512以上の値を設定してください。
プロジェクトデータベース内のproject.max-sem-ids、process.max-sem-nsemsに以下の値を設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
project.max-sem-ids | (クライアント多重度 × 2 + 300) × 同時起動RDBシステム数 (注) | 加算 |
process.max-sem-nsems | 512 | 最大値 |
注) クライアント多重度は同時に実行するアプリケーションおよびRDBコマンドの数を規定する値となります。この値の概算方法は以下のようになります。
クライアント多重度 = 同時にローカルアクセスを行うすべての アプリケーションのコネクション数の合計値 + 同時に実行するRDBコマンド数
プロジェクトデータベース内のprocess.max-msg-qbytes、project.max-msg-ids、およびprocess.max-msg-messagesに以下の値をコマンドで設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
process.max-msg-qbytes | 65536 | 最大値 |
project.max-msg-ids | 2 × 同時起動RDBシステム数 | 加算 |
process.max-msg-messages | クライアント多重度 × 同時起動RDBシステム数 (注) | 最大値 |
注) クライアント多重度は同時に実行するアプリケーションおよびRDBコマンドの数を規定する値となります。この値の概算方法は以下のようになります。
クライアント多重度 = 同時にローカルアクセスを行うすべてのアプリケーション のコネクション数の合計値 + 同時に実行するRDBコマンド数
以下にprojmodコマンドを使用して、user.rootプロジェクトに共用メモリの獲得方式を一括獲得方式にする場合の設定例を示します。
共用メモリ資源のパラメタproject.max-shm-memoryに2G、project.max-shm-idsに1Kを設定します。
# projmod -s -K 'project.max-shm-memory=(privileged,2G,deny)' user.root # projmod -s -K 'project.max-shm-ids=(privileged,1K,deny)' user.root
セマフォ資源のパラメタproject.max-sem-idsに1K、process.max-sem-nsemsに512を設定します。
# projmod -s -K 'project.max-sem-ids=(privileged,1K,deny)' user.root # projmod -s -K 'process.max-sem-nsems=(privileged,512,deny)' user.root
メッセージキュー資源のパラメタprocess.max-msg-qdbytesに65536、project.max-msg-idsに1K、process.max-msg-messagesに10Kを設定します。
# projmod -s -K 'process.max-msg-qdbytes=(privileged,65536,deny)' user.root # projmod -s -K 'project.max-msg-ids=(privileged,1K,deny)' user.root # projmod -s -K 'process.max-msg-messages=(privileged,10K,deny)' user.root
上記で設定した値が正しいか以下のコマンドで確認してください。
# projects -l user.root user.root projid : 1 comment: "" users : (none) groups : (none) attribs: process.max-msg-messages=(privileged,10000,deny) process.max-msg-qdbytes=(privileged,65536,deny) project.max-msg-ids=(privileged,1000,deny) process.max-sem-nsems=(privileged,512,deny) project.max-sem-ids=(privileged,1000,deny) project.max-shm-ids=(privileged,1000,deny) project.max-shm-memory=(privileged,2147483648,deny) #
上記手順1.~4.をsystemおよび、defaultプロジェクトへも実施してください。また、ユーザ定義のプロジェクトが作成されている場合は、同様に実施してください。
参照
プロジェクトデータベースの設定方法およびprojmodコマンドの詳細については、使用しているシステムベンダのドキュメントを参照してください。
カーネル構成ファイル(/etc/systemファイル)を利用する場合
カーネル構成ファイル(/etc/systemファイル)に設定します。
注意
カーネル編集が完了したら、システムを再起動してください。
Solarisのリリースによりカーネル構成ファイル内のパラメタが廃止されたり、デフォルト値が変更されることがあります。廃止されたパラメタについては設定は不要です。
カーネル構成ファイル内のパラメタの詳細については、使用しているシステムベンダのドキュメントを参照してください。
non-global zoneでカーネル構成ファイル(/etc/systemファイル)を使用する場合は、各non-global zoneの値を加算し、その合計値をglobal zoneのカーネル構成ファイルに設定してください。
以下のような構成の場合は、non-global zone A,B,C の合計値をglobal zoneのカーネル構成ファイルへ加算してください。
共用メモリ資源の設定について説明します。
カーネル構成ファイル内のshminfo_shmmax、shminfo_shmmniに以下の値を設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
shmsys:shminfo_shmmax | RDBEXTMEMの値 × 1024 (注1) | 最大値 |
shmsys:shminfo_shmmni | (ファンクションルーチン多重度 + 10) × 同時起動RDBシステム数 (注2) | 加算 |
注1) RDBEXTMEMの詳細は、“4.1 RDB構成パラメタファイルによる定義”を参照してください。
注2) ファンクションルーチン多重度は、ファンクションルーチンを同時に実行するアプリケーションのコネクション数です。
カーネル構成ファイル内のshminfo_shmmax、shminfo_shmmniに以下の値を設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
shmsys:shminfo_shmmax | COMMUNICATION_BUFFERの値 × 1024 + 16384 (注1) | 最大値 |
shmsys:shminfo_shmmni | (クライアント多重度 + 10 + ファンクションルーチン多重度) × 同時起動RDBシステム数 (注2) (注3) | 加算 |
注1) COMMUNICATION_BUFFERの詳細は、“4.2 システム用の動作環境ファイルによる定義”を参照してください。上記の計算式で算出された値が20480より小さい場合は、20480以上の値を指定してください。
注2) クライアント多重度は、同時に実行するアプリケーションおよびRDBコマンドの数を規定する値となります。この値の概算方法は以下のようになります。
クライアント多重度 = 同時にローカルアクセスを行うすべてのアプリケーション のコネクション数の合計値 + 同時に実行するRDBコマンド数
注3) ファンクションルーチン多重度は、ファンクションルーチンを同時に実行するアプリケーションのコネクション数です。
セマフォ資源の設定について説明します。
カーネル構成ファイル内のseminfo_semmni、seminfo_semmns、seminfo_semmnuおよびseminfo_semmslに以下の値を設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
semsys:seminfo_semmni | 同時起動RDBシステム数 × 300 | 加算 |
semsys:seminfo_semmns | 同時起動RDBシステム数 × (400 + RDBCNTNUM) (注1) | 加算 |
semsys:seminfo_semmnu | クライアントプロセス多重度 (注2) | 加算 |
semsys:seminfo_semmsl | (RDBCNTNUM + 3) / 15 (注3) | 最大値 |
注1) RDBCNTNUMの詳細は、“4.1 RDB構成パラメタファイルによる定義”を参照してください。
注2) クライアントプロセス多重度は、同時に実行するアプリケーションおよびRDBコマンド数を規定する値となります。この値の概算方法は以下のようになります。
クライアントプロセス多重度 = 同時にローカルアクセスを行うアプリケーション のプロセス数 + 同時に実行するRDBコマンド数
注3) 割り切れない場合は、小数点以下を切り上げて設定してください。ただし、上記の計算式で算出された値が25より小さい場合には、25以上の値を設定してください。
カーネル構成ファイル内のseminfo_semmni、seminfo_semmns、seminfo_semmnuおよびseminfo_semmslに以下の値を設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
semsys:seminfo_semmni | (クライアント多重度 × 2 + 300) × 同時起動RDBシステム数 (注) | 加算 |
semsys:seminfo_semmns | (クライアント多重度 × 4 + 300) × 同時起動RDBシステム数 (注) | 加算 |
semsys:seminfo_semmnu | クライアントプロセス多重度 (注) | 加算 |
semsys:seminfo_semmsl | 25 | 最大値 |
注) クライアント多重度およびクライアントプロセス多重度は同時に実行するアプリケーションおよびRDBコマンドの数を規定する値となります。この値の概算方法は以下のようになります。
クライアント多重度 = 同時にローカルアクセスを行うすべての アプリケーションのコネクション数の合計値 + 同時に実行するRDBコマンド数 クライアントプロセス多重度 = 同時にローカルアクセスを行う アプリケーションのプロセス数 + 同時に実行するRDBコマンド数
カーネル構成ファイル内のmsginfo_msgmax、msginfo_msgmnb、msginfo_msgmni、およびmsginfo_msgtqlに以下の値を設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
msgsys:msginfo_msgmax | 128 | 最大値 |
msgsys:msginfo_msgmnb | 4096 | 最大値 |
msgsys:msginfo_msgmni | 2 × 同時起動RDBシステム数 | 加算 |
msgsys:msginfo_msgtql | クライアント多重度 × 同時起動RDBシステム数 (注) | 加算 |
注) クライアント多重度は同時に実行するアプリケーションおよびRDBコマンドの数を規定する値となります。この値の概算方法は以下のようになります。
クライアント多重度 = 同時にローカルアクセスを行うすべてのアプリケーション のコネクション数の合計値 + 同時に実行するRDBコマンド数
参照
カーネル資源の設定方法についての詳細は、使用しているシステムベンダのドキュメントを参照してください。
/etc/sysctl.confを編集し、パラメタ値を変更します。変更後は、“sysctl -p /etc/sysctl.conf”を実行するか、システムを再起動してください。
/etc/sysctl.confファイル内のパラメタの指定形式を以下に示します。
パラメタ名 = 値
注意
/etc/sysctl.confに値が設定されていない場合は、OSのデフォルト値が使用されています。この場合には、OSのデフォルト値を基準にして追加や変更を行ってください。OSが使用している値は、sysctlコマンドのaオプションにより表示できます。sysctlコマンドの詳細については、OSのmanコマンドで確認してください。
各パラメタの説明で、“最大値”とあるパラメタについては、すでに設定されている値またはデフォルト値と比較して大きい方の値を設定し、“加算”とあるパラメタについては、すでに設定されている値またはデフォルト値に加算した値を設定してください。
“一括獲得方式”と“分割獲得方式”の選択基準については、“1.1.3 プロセス構成を参照してください。
共用メモリ資源の設定について説明します。
/etc/sysctl.confファイル内のkernel.shmmax、kernel.shmall、kernel.shmmniパラメタに以下の値を設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
kernel.shmmax | RDBEXTMEM × 1024 (注1) | 最大値 |
kernel.shmall | (RDBEXTMEM × 1024) / メモリのページ長 (注2) | 加算 |
kernel.shmmni | (ファンクションルーチン多重度 + 10) × 同時起動RDBシステム数 (注3) | 加算 |
注1) RDBEXTMEMの詳細は、“4.1 RDB構成パラメタファイルによる定義”を参照してください。
注2) メモリのページ長は、4キロバイトです。
注3) ファンクションルーチン多重度は、ファンクションルーチンを同時に実行するアプリケーションのコネクション数です。
/etc/sysctl.confファイル内のkernel.shmmax、kernel.shmall、kernel.shmmniパラメタに以下の値を設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
kernel.shmmax | COMMUNICATION_BUFFERの値 × 1024 + 16384 (注1) | 最大値 |
kernel.shmall | (COMMUNICATION_BUFFERの値 ×1024 + 16384) / メモリのページ長 (注2) | 加算 |
kernel.shmmni | (クライアント多重度 + 10 + ファンクションルーチン多重度) × 同時起動RDBシステム数 (注3) (注4) | 加算 |
注1) COMMUNICATION_BUFFERの詳細は、“4.2 システム用の動作環境ファイルによる定義”を参照してください。上記の計算式で算出された値が20480より小さい場合は、20480以上の値を指定してください。
注2) メモリのページ長は、4キロバイトです。
注3) クライアント多重度は、同時に実行するアプリケーションおよびRDBコマンドの数を規定する値となります。この値の概算方法は以下のようになります。
クライアント多重度 = 同時にローカルアクセスを行うすべてのアプリケーション のコネクション数の合計値 + 同時に実行するRDBコマンド数
注4) ファンクションルーチン多重度は、ファンクションルーチンを同時に実行するアプリケーションのコネクション数です。
セマフォ資源の設定について説明します。
/etc/sysctl.confファイル内のkernel.semパラメタに以下の形式で指定します。
kernel.sem = para1 para2 para3 para4
para1、para2、para3、para4に以下の値を設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
para1 | (RDBCNTNUM + 3) / 15 (注1) | 最大値 |
para2 | 同時起動RDBシステム数 × (400 + RDBCNTNUM) (注2) | 加算 |
para3 | すでに設定されている値 (注3) |
|
para4 | 同時起動RDBシステム数 × 300 | 加算 |
注1) 割り切れない場合は、小数点以下を切り上げて設定してください。ただし、この値が25より小さい場合には、25以上の値を設定してください。
注2) RDBCNTNUMの詳細は、“4.1 RDB構成パラメタファイルによる定義”を参照してください。
注3) 値が設定されていない場合は、OSのデフォルト値を設定してください。
/etc/sysctl.confファイル内のkernel.semパラメタに以下の形式で指定します。
kernel.sem = para1 para2 para3 para4
para1、para2、para3、para4に以下の値を設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
para1 | 25 | 最大値 |
para2 | (クライアント多重度 × 4 + 300) × 同時起動RDBシステム数 (注1) | 加算 |
para3 | すでに設定されている値 (注2) |
|
para4 | (クライアント多重度 × 2 + 300) × 同時起動RDBシステム数 (注1) | 加算 |
注1) クライアント多重度は同時に実行するアプリケーションおよびRDBコマンドの数を規定する値となります。この値の概算方法は以下のようになります。
クライアント多重度 = 同時にローカルアクセスを行うすべての アプリケーションのコネクション数の合計値 + 同時に実行するRDBコマンド数
注2) 値が設定されていない場合は、OSのデフォルト値を設定してください。
/etc/sysctl.confファイル内のkernel.msgmax、kernel.msgmnb、kernel.msgmniパラメタに以下の値を設定してください。
パラメタ名 | 必要数 | 備考 |
---|---|---|
kernel.msgmax | 128 | 最大値 |
kernel.msgmnb | 4096 | 最大値 |
kernel.msgmni | 2 × 同時起動RDBシステム数 | 加算 |