軸Webサービスをデプロイする64ビットのJBossインスタンスがあります。これは、ネイティブの実行可能コマンドを実行するためのフロントエンドフェースにすぎません。Webサービスが呼び出されると、このネイティブ実行可能コマンドが実行されます。64ビットインスタンスは3GBのメモリで実行されます。
最近、同じ物理マシンで実行されているJBossの2番目のインスタンスを導入しました。JNI 32ビットコードを実行する必要があるため、32ビットモードで実行されます。JBossのこの2番目のインスタンスはports-01にバインドされているため、8180(基本的にデフォルトのJBossポートの+100)で実行されます。このインスタンスは512MBのメモリで実行されます。
この2番目のJBossインスタンスを導入してから、64ビットインスタンスが呼び出されたときにネイティブ実行可能コマンドを実行しようとすると、「スペースが足りません」というエラーメッセージが表示されます。これは、JavaからのIOExceptionであり、unixforkAndExecコマンドからのものです。私が読んだすべてのことは、これはスワップファイルのサイズと関係があると言っています。unix、topコマンドを使用すると、スワップファイルのサイズは変更されないように見えます。これは3GBです。最初に64ビットインスタンスを実行すると、これに問題はないようですが、32ビットインスタンスを最初に実行すると、このエラーが発生します。2つのインスタンスがリソースをめぐって競合しているのか、それともUNIXからのスワップスペースが本当に不足しているのか疑問に思います。JBossがスワップスペースを使用するかどうか、およびそれがどれだけ使用するか、またはJavaがそれを処理するかどうかはわかりません。
私はこの問題についての解決策のためのアイデアや提案を探していると思います。私が見ている主なパターンは、64ビットインスタンスが最初に起動した場合、ネイティブ実行可能ファイルは正常に機能しますが、32ビットインスタンスが最初に起動した場合、問題が発生することです。