Japan
サイト内の現在位置を表示しています。
Windows(x86)版 WebOTX Standard/Enterprise Edition でのJavaヒープサイズ、メモリプールサイズ、最大同時接続数の上限について
1. 概要
Windows:x86版 WebOTX Standard/Enterprise Editionを使用している場合、Javaヒープサイズとメモリプールサイズの合計は最大で700MB程度となる制限があります。
また、IIOPリスナの最大同時接続数の設定可能な値は最大で1700程度です。この制限はWebOTX全バージョン共通です。
2. 詳細
32ビットWindowsの場合、アプリケーション側で使用可能な各プロセス空間の仮想メモリサイズの最大値はOSの制限により2GBとなっています。
WebOTXではユーザアプリケーションのプロセスの仮想メモリの一部領域をWebOTX制御用として確保しているため、Javaヒープサイズとメモリプールサイズで設定可能な上限値がOSの制限値より小さくなります。
WebOTXではメモリプールとして共有メモリを事前に確保しており、 メモリプールサイズはWebOTXシステム単位の設定値です。また、JavaヒープはJavaのクラスがインスタンス化される際に使用されるメモリ空間であり、Javaヒープサイズは各プロセスグループ単位のJavaVMオプションで設定するヒープサイズです。
2.1. Javaヒープサイズの制限
アプリケーションプロセスの仮想メモリ空間の制限は次の式の通りです。ここで示す「700MB」という制限はWebOTXの制限です。
メモリプールサイズ + Javaヒープサイズ < 700MB程度
Javaヒープサイズは連続した領域を確保する必要があります。ユーザアプリケーションが使用できる仮想メモリ空間はOSの制限により2GBとなっていますが、連続して確保できる領域はProcess Explorer等のツールを使用して確認すると1.4~1.6GB程度となっています。(連続した領域でなければ2GB程度使用可能です。)
2.2. IIOPリスナの最大同時接続数の制限
次の式で示されるIIOPリスナプロセスの仮想メモリ空間の制限があります。
ただし、メモリプールサイズとIIOPリスナの最大同時接続数だけで 2GB分の仮想メモリを全て使用できるわけではありません。IIOPリスナの最大同時接続数の上限は最大1700程度となっています。
メモリプールサイズ + IIOPリスナの最大同時接続数 * 1MB < 2GB程度
OSで各スレッドに1MB のスタック空間が割り当てられているため、IIOPリスナの接続端末1つに1MBが必要になります。これはOSの制限です。各スレッドで必要な連続領域は1MBであり、Javaヒープサイズのように数百MBの領域を連続して確保する必要はないため、OSの制限である2GBに達するまではIIOPリスナの最大同時接続数を増やす事が可能です。
3. 上限値を超えた場合に出力されるメッセージ
プロセス起動時に上記制限値を超えた場合、プロセス起動に失敗します。例えばJavaヒープサイズで1000MBを設定した場合、アプリケーションプロセスは起動せず、イベントログに次のようなメッセージが出力されます。
W:13:TPS15-01107 プロセスが終了しました。
また、IIOPリスナの最大同時接続数を例えば2000に設定した場合、IIOPリスナプロセスは起動せず、イベントログに次のようなエラーメッセージが出力されます。
E:1:TPS07-00402 OSマクロで継続できないエラー発生。
pthread_create エラー ERRNO:12(Not enough space)
4. 他OSの制限
UNIXにおいても各プロセスの仮想メモリ空間の上限はOSの制限として存在しますが、32ビットWindowsのようにWebOTXによる上限の制限はありません。OSの制限による上限値については各OSのマニュアルをご覧ください。
また、64ビットWindowsにおいても制限はありますが、32ビットWindowsと比べて仮想メモリの容量は次のように増加されています。
32ビット 4GB (アプリケーション側では2GB)
64ビット 16TB (アプリケーション側では8TB)
64ビットWindowsでは十分大きな仮想メモリ空間が使用可能のため、WebOTXを使用する上で上記によるヒープサイズの制限や最大同時接続数の制限は事実上問題となりません。
5. 更新履歴
- 2007/07/18
-
初 版