[Linux]

オペレーティング・システムの構成とチューニング ( Linux )

このトピックは、 Linux® システムで IBM® MQ を構成する場合に使用します。

重要: このトピックの情報は、キュー・マネージャーが mqm ユーザー ID によって開始される場合にのみ適用されます。

他のユーザー ID がキュー・マネージャーを開始する場合は、mqmに示されているNOFILE項目とNPROC項目が、そのユーザー ID と重複していることを確認してください。

シェル・インタープリター

/bin/shシェルが Bourne シェルと互換性のある有効なシェル・インタープリターであることを確認してください。そうでないと、IBM MQのインストール後の構成が正常に完了しません。 RPM を使用してシェルをインストールしなかった場合は、IBM MQをインストールしようとすると、/bin/sh シェルの前提条件の失敗が表示されることがあります。 この失敗が生じたのは、有効なシェル・インタープリターがインストールされていることを RPM テーブルが認識しないためです。 障害が発生した場合は、RPM を使用して/bin/shシェルを再インストールするか、RPM オプション--nodepsを指定してIBM MQのインストール時の依存関係検査を無効にすることができます。
注: LinuxIBM MQ をインストールする場合、 --dbpath オプションはサポートされません。

スワップ・スペース

負荷が高い場合、 IBM MQ は仮想メモリー (スワップ・スペース) を使用できます。 仮想メモリーがいっぱいになると、 IBM MQ プロセスが失敗したり、不安定になったりして、システムに影響を与える可能性があります。

この状態を回避するために、 IBM MQ 管理者は、オペレーティング・システムのガイドラインで指定されている十分な仮想メモリーがシステムに割り振られていることを確認する必要があります。

System V IPC カーネル構成

IBM MQ は、特に共有メモリーで System V IPC リソースを使用します。 ただし、限定された数のセマフォーも使用されます。

これらのリソースの IBM MQ の最小構成は以下のとおりです。
表 1. チューナブル・カーネル・パラメーターの最小値
名前 カーネル名 増加 説明
shmmni kernel.shmmni 4096 はい 共用メモリー・セグメントの最大数
shmmax kernel.shmmax 268435456 いいえ 共用メモリー・セグメントの最大サイズ (バイト数)
shmall kernel.shmall 2097152 はい 共用メモリーの最大量 (ページ数)
semmsl kernel.sem 32 いいえ セット当たりの許容セマフォー最大量
semmns kernel.sem 4096 はい セマフォーの最大数
semopm kernel.sem 32 いいえ 単一オペレーション内の操作の最大数
semmni kernel.sem 128 はい セマフォー・セットの最大数
thrmax kernel.threads-max 32768 はい スレッドの最大数
pidmax kernel.pid_max 32768 はい プロセス ID の最大数
注:
  1. これらの値は、中規模のキュー・マネージャー 2 つをシステムで実行するのに十分な値です。 キュー・マネージャーを 2 つより多く実行しようとする場合や、キュー・マネージャーが処理するワークロードが大きい場合は、「増加」列に Yes と示されている値を大きくしなければならない場合もあります。
  2. kernel.sem値は、4 つの値を順に含む単一のカーネル・パラメーター内に含まれます。
パラメーターの現行値を表示するには、root 権限を持つユーザーとしてログオンし、次のように入力します。

sysctl Kernel-name
これらの値を追加または変更するには、root 権限を持つユーザーとしてログオンします。 ファイル /etc/sysctl.conf をテキスト・エディターで開き、以下の項目を選択した値に追加するか、または変更します。

kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 268435456
kernel.sem = 32 4096 32 128
それから保存してファイルを閉じます。

これらのsysctl値を即時にロードするには、コマンドsysctl -pを入力します。

sysctl -p コマンドを発行しない場合、システムのリブート時に新しい値がロードされます。

デフォルトでは、 Linux カーネルには最大プロセス ID があります。これはスレッドでも使用でき、許可されるスレッド数を制限する可能性があります。

システムで別のスレッドを作成するために必要なリソースが不足する場合、またはプロセス {PTHREAD_THREADS_MAX} でシステム設定のスレッド総数の限度を超過する場合には、オペレーティング・システムがレポートを出します。

kernel.threads-maxおよびkernel.pid-maxについて詳しくは、多数のクライアントを実行している場合のIBM MQキュー・マネージャーでのリソース不足を参照してください。

IBM MQ での RemoveIPC の設定

重要: ログイン・マネージャー構成ファイル (logind.con および logind.conf.d) で RemoveIPC の設定をデフォルト値の 「はい」 のままにすると、 IBM MQ 所有の IPC リソースが IBM MQの制御外で削除される可能性があります。

値を 「いいえ」に設定する必要があります。 RemoveIPC について詳しくは、 login.conf のマニュアル・ページを参照してください。

TCP/IP 構成

IBM MQ チャネルに keepalive を使用する場合は、カーネル・パラメーターを使用して KEEPALIVE の操作を構成できます。

net.ipv4.tcp_keepalive_intvl
net.ipv4.tcp_keepalive_probes
net.ipv4.tcp_keepalive_time
詳しくは、 TCP/IP SO_KEEPALIVE オプションの使用 を参照してください。

パラメーターの現行値を表示するには、root 権限を持つユーザーとしてログオンし、sysctl Kernel-nameと入力します。

これらの値を追加または変更するには、root 権限を持つユーザーとしてログオンします。 テキスト・エディターを使用してファイル /etc/sysctl.conf を開き、以下の項目を選択した値に追加するか、または変更します。

これらのsysctl値を即時にロードするには、コマンドsysctl -pを入力します。

sysctl -p コマンドを発行しない場合、システムのリブート時に新しい値がロードされます。

オープン・ファイルの最大数

重要: mqm ユーザー という用語は、 mqm ユーザー、およびキュー・マネージャーの開始に使用されるその他のユーザー ID に適用されます。

システム内のオープン・ファイル・ハンドルの最大数は、パラメーターfs.file-maxによって制御されます。

中規模サイズのキュー・マネージャーを 2 つ使用するシステムの場合、このパラメーターの最小値は 524288 です。
注: オペレーティング・システムのデフォルトが高い場合は、大きい設定のままにするか、オペレーティング・システムのプロバイダーに相談してください。

キュー・マネージャーを 2 つより多く実行しようとする場合や、キュー・マネージャーが処理するワークロードが大きい場合は、この値を大きくしなければならないかもしれません。

パラメーターの現行値を表示するには、root 権限を持つユーザーとしてログオンし、sysctl fs.file-maxと入力します。

これらの値を追加または変更するには、root 権限を持つユーザーとしてログオンします。 テキスト・エディターを使用してファイル /etc/sysctl.conf を開き、選択した値に以下の項目を追加するか、または変更します。

fs.file-max = 524288
それから保存してファイルを閉じます。

これらのsysctl値を即時にロードするには、コマンドsysctl -pを入力します。

sysctl -p コマンドを発行しない場合、システムのリブート時に新しい値がロードされます。

PAM (プラグ可能認証モジュール) などのプラグ可能セキュリティー・モジュールを使用している場合は、このモジュールがmqmユーザーのオープン・ファイルの数を不当に制限していないことを確認してください。 mqmユーザーのプロセスごとのオープン・ファイル記述子の最大数を報告するには、mqmユーザーとしてログインし、以下の値を入力します。

ulimit -n
標準のIBM MQ キュー・マネージャーの場合、mqmユーザーの nofile 値を 10240 以上に設定します。 mqmユーザーで実行されるプロセスのオープン・ファイル記述子の最大数を設定するには、以下の情報を/etc/security/limits.confファイルに追加します。

mqm       hard  nofile     10240
mqm       soft  nofile     10240

プロセスの最大数

重要: mqm ユーザー という用語は、 mqm ユーザー、およびキュー・マネージャーの開始に使用されるその他のユーザー ID に適用されます。

実行中の IBM MQ キュー・マネージャーは、いくつかのスレッド・プログラムで構成されます。 接続されている各アプリケーションによって、キュー・マネージャー・プロセスで実行されるスレッドの数が増加します。 通常はユーザーが実行するプロセスの最大数をオペレーティング・システムで制限します。 この制限は、個々のユーザーまたはサブシステムによって作成されるプロセスの数が多過ぎることが原因でオペレーティング・システム障害が発生しないようにするものです。 mqmユーザーが実行を許可されているプロセスの最大数が十分であることを確認する必要があります。 プロセス数には、キュー・マネージャーに接続するチャネルとアプリケーションの数を含める必要があります。

以下の計算は、mqmユーザーのプロセス数を決定する際に役立ちます。
nproc = 2048 + clientConnections * 4 + qmgrChannels * 4 +
    localBindingConnections
ここで、
  • clientConnections は、このマシンのキュー・マネージャーに接続する他のマシンのクライアントからの接続の最大数です。
  • qmgrChannels は、他のキュー・マネージャーに対する稼働中のチャネル (チャネル定義ではない) の最大数です。 この数には、クラスター・チャネルや送信側/受信側チャネルなどが含まれます。
  • localBindingConnections には、アプリケーション・スレッドは含まれません。
このアルゴリズムは、以下の前提で策定されています。
  • 2048 は、よほどのことがない限りキュー・マネージャー・スレッドを扱う上で十分な数として設定されています。 他のアプリケーションを多数実行する場合は、数を増やさなければならない可能性もあります。
  • nproc を設定する時には、今後そのマシンで実行する可能性のあるアプリケーション、接続、チャネル、キュー・マネージャーの最大数を考慮に入れてください。
  • このアルゴリズムはペシミスティック・ビューを採用しており、 IBM MQ およびファースト・パス・チャネルの後のバージョンでは、実際に必要な nproc が若干少なくなる可能性があります。
  • [V9.0.2 2017 年 5 月][V9.0.0.1 2017 年 5 月] Linuxでは、各スレッドは軽量プロセス (LWP) として実装され、各 LWP は nproc に対して 1 つのプロセスとしてカウントされます。
PAM_limits セキュリティー・モジュールを使用して、ユーザーが実行するプロセスの数を制御できます。 mqm ユーザーのプロセスの最大数は、以下のように構成できます。

mqm       hard  nproc      4096
mqm       soft  nproc      4096
PAM_limitsセキュリティー・モジュール・タイプの構成方法について詳しくは、以下のコマンドを入力してください。

man limits.conf

mqconfig コマンドを使用して、システム構成を確認できます。

システムの構成について詳しくは、 How to configure UNIX and Linux systems for IBM MQを参照してください。

64 ビット Linux プラットフォームでの 32 ビット・サポート

一部の 64 ビット Linux ディストリビューションでは、デフォルトで 32 ビット・アプリケーションがサポートされなくなりました。 dspmqver コマンドを実行して IBM Global Security Kit for IBM MQ (GSKit) のバージョンを表示すると、32 ビット・バージョンの GSKit がインストールされていないことを示すメッセージが表示される場合があります。 影響を受けるプラットフォームの詳細、および 32 ビット・アプリケーションをこれらのプラットフォームで実行できるようにするためのガイダンスについては、 Linux システムでのハードウェア要件およびソフトウェア要件を参照してください。