[SOA/BPM] Memory Efficient Windows SOA Server

原文はこちら。
https://blogs.oracle.com/reynolds/entry/memory_efficient_windows_soa_server

メモリを効率的に使うように、SOA Suite 11.1.1.6をWindows Serverにインストールする
11.1.1.6がダウンロードできるようになったので、Windows Server環境を作ろうと考えました。メモリを最小限に使うよう、SOA Suiteドメインの管理サーバに全ての機能を詰め込むことにしました。

必要なソフトウェア
  • 64ビット版 JDK
    http://www.oracle.com/technetwork/java/javase/downloads/index.html
  • Oracle SOA Suite
    http://www.oracle.com/technetwork/middleware/soasuite/overview/index.html
    • 64bit版が必要な場合は、 "Microsoft Windows 32bit JVM"や"Linux 32bit JVM"ではなく "Generic"を選択しましょう。
    • ここに必要なソフトウェアのリンクがそろっています。
    • "Generic"を選択すると、リポジトリ作成ユーティリティ(以下、RCU)のダウンロードリンクが現れませんので、"Microsoft Windows 32bit JVM"もしくは"Linux 32bit JVM"を選択してダウンロードして下さい。
    • 同様に、データベースが必要な場合はプラットフォームを選択してXE for WindowsもしくはLinuxをダウンロードして下さい(訳注:既にSEやEEをお使いであれば無理にXEを使う必要はありません)。
可能であれば、個々のJVMにより多くのメモリを割り当てることができるように、64bitのJDKをインストールすることをお勧めします。
Windows上でXEは動作しますが、XEの制限事項があり、時々大規模もしくは複数のSOAデプロイメントを実行する上でスペースが足りなくなることがありますので、完全なOracleデータベース(SE OneやSE、EE)の利用が可能であれば、そちらのほうがよいでしょう。

インストール手順

下図のフローチャートで、SOA Suiteのインストールおよび構成で必要となる手順を概説しています。


上記フローチャートの手順を以下で説明します。

64-bit?
64bit環境のインストールが必要でしょうか。WindowsおよびLinuxインストーラはSun JDKやJRockitの32bit版をインストールするため、64bit環境用に別のJDKをインストールする必要があります。

Install 64-bit JDK
64bit JDKはHotspotでもJRockitでもOKです。JDK7もしくはJDK6を選択できます。

Install WebLogic
64bit環境の場合、WebLogic Serverのインストール時には、"java –jar wls1036_generic.jar"を使う必要があります。Coherenceが一緒にインストールされることに注意して下さい。"Typical"インストールを選択するのが最も簡単です。



SOA Suite Required?
まだSOA Suiteをインストールしていない場合には、スキップしてWebLogicドメインを作成することができます。

Install SOA Suite
SOA Suiteインストーラを実行し、WebLogic Serverインストール時に作成したミドルウェアホームを指定します。WindowsでSOA Suiteをインストールする場合、管理者権限が必要です。Windows Server 2008R2では、jreLocパラメータを無視してしまう場合に権限を付与するため、管理者権限で立ち上げたコマンドプロンプトからインストーラを起動する必要がありました。

Database Available?
SOAスキーマをインストール可能なデータベースにアクセスできるでしょうか。SOA SuiteはOracleデータベースにアクセスする必要があります(他のデータベースもサポートしていますが、通常Oracleデータベースを利用します)。

Install Database
今回はXEの制限を回避するため、Oracle database 11gR2を使いました。データベースキャラクタはUnicode(AL32UTF8)を使うことにご注意下さい。あと、今回は新しいセキュリティ設定は無効にしました。これは開発用データベースなのでこうしたセキュリティ設定が邪魔になるためです。あと、データベースの初期化パラメータは、processesは少なくとも150、sessionsは設定しないか、もしくは少なくとも200を設定しましょう。

Run RCU
RCUを実行してSOA Suiteデータベーススキーマを作成します。 "SOA and BPM Infrastructure"コンポーネントをインストールして、SOA Suiteをサポートするようにします。スキーマの接頭辞(DEV)を使い続けたい場合、構成ウィザードは非常に簡単に終了します。


Run Config Wizard
構成ウィザードでWebLogic Serverインスタンスをホストするドメインを作成します。メモリ使用量を最小限にするために、"Oracle Enterprise Manager"と"Oracle SOA Suite for developers"を選択します。他に必要なコンポーネントは自動的に選択されます。
"for developers"では、他の管理対象サーバを作成してインストールするのではなく、対象となるコンポーネントを管理サーバにインストールします。これにより、システムを実行するJVMの個数を削減でき、それに従い必要となるメモリの量も減少します。管理機能と実行機能が一つのサーバに纏まっているので、開発環境以外には適しません。起動が遅くなるため、全ての必要なモジュールをロードするのに時間がかかります。

もし存在するなら、ミドルウェアホームの"oracle_common/common/bin"ディレクトリ中の構成ウィザードを実行することをおすすめします。これを使うとSOAを含む全てのテンプレートにアクセスできるはずです。
BAMを同一JVMで実行したい場合、"Managed Servers, Clusters and Machines"の "Select Optional Configuration"を選択しましょう。

管理サーバでBAMを実行するようにするために、デフォルトで作成される管理対象サーバ"bam_server1"を削除しましょう。この結果、BAMは管理サーバで動作するようになります。


インストール時の問題

一つの大きなJVM上で全てのコンポーネントを実行しようとして問題が発生しました。
次のアプリケーションは管理サーバで実行するように設定されていなかったので、管理サーバで実行するように設定する必要があります。
  • b2bui
  • composer
  • Healthcare UI
  • FMW Welcome Page Application (11.1.0.0.0)

メモリの利用量はどれぐらいになったのか?

VirtualBox上のWindows 2008 R2 Serverで実行した場合、Oracle Database 11gR2とSOA/BPM/BAMを3GBのメモリで実行できました。最小512MBをPermGenに割当て、ヒープに最小1.5GB割り当てました。setSOADomainEnv.cmdの設定は以下のようにしました。
set DEFAULT_MEM_ARGS=-Xms1536m -Xmx2048m     
set PORT_MEM_ARGS=-Xms1536m -Xmx2048m
set DEFAULT_MEM_ARGS=%DEFAULT_MEM_ARGS% -XX:PermSize=512m -XX:MaxPermSize=768m
set PORT_MEM_ARGS=%PORT_MEM_ARGS% -XX:PermSize=512m -XX:MaxPermSize=768m
JConsoleでJVMのメモリ使用量を監視し、これらの数字にたどり着きました。
タスクマネージャは、システムの合計メモリ使用量として2.9GBを示していました。ちょうどVMに割り当てた3GBより小さい値でした。
パフォーマンスはいまいちですが各コンポーネントが動きますし、JDeveloperも8GBのメモリを搭載しているラップトップ上で動きました。

0 件のコメント:

コメントを投稿