RIGHT:[[目次>Hestia Hacks#SDKDevDuide]]|[[前>HestiaCommander上への実装]]|[[次>有用なリンク集]]
RIGHT:[[目次>Hestia Hacks#SDKDevDuide]]|[[前>サンプルスクリプト]]|[[次>有用なリンク集]]
Hestiaのチューニングは、Hestiaが提供する各オプションの設定によるチューニング、HestiaのベースとなるフレームワークのJBossおよびJVMチューニングに大別されます。
#contents
*Hestiaオプション設定 [#HestiaOption]
**サーバオプション設定 [#ServerOption]
***FIFOモードのサポート [#a500e1be]
HestiaとEIS間でのメッセージの処理順序保証の必要がない場合、FIFOモードのサポートをオフにすることにより、大幅な処理性能の向上が期待できます。
***Engine起動間隔,Engine最大スレッド数 [#b03c5578]
-Hestiaは定期的にEngineの処理を起動し、データベースに格納されている受信メッセージ→RJOへの変換、およびデータベースに格納されているRJO→送信メッセージへの変換を行います。Engine最大スレッド数(デフォルト:32)の多重度で処理を行いますが、ログを分析し、当設定間隔内で十分に処理が行われていると分析できる場合、起動間隔を縮小することにより処理性能の向上が期待できる場合があります。
-大量データの送受信を行っている場合、Server Busyの警告ログが出力される場合があります。((この場合処理待ちキューに蓄積されますのでトランザクションは保証されます))この場合、最大スレッド数を増やす、または起動間隔を延伸する等の処置を行うことにより警告を削減できます。
***Sender起動間隔,Sender最大スレッド数 [#h11c3443]
Hestiaは定期的にSenderの処理を起動し、データベースに格納されている送信待ちメッセージを取引先へ送信します。Engine起動間隔、Engine最大スレッド数と同様に、起動間隔を縮小することにより処理性能の向上が期待できる場合があります。~
特に、FIFOモードのサポートをONに設定している場合に有用です。((FIFOモードのサポートをONに設定した場合、OutBoundメッセージはその順序を保証するためにHTTPセッションは1セッションしか処理されませんので、送信処理がボトルネックとなります。))
***Bridgeトランザクションタイムアウト((オートコミットOFFの場合)) [#d8cb8a3c]
Hestia--EIS間のトランザクションにおいて、何らかの理由によりEISがトランザクションコミットに失敗した場合、当設定値の間、EISは再度同メッセージをポーリングすることができません。更にFIFOモードをONに設定していた場合、当設定値の間、コミット失敗以降のメッセージはすべてポーリングできません。当設定値を縮小方向に設定することで
EISは処理失敗後の再処理への待ち時間を縮小することができます。
***キャッシュリフレッシュ間隔 [#wbfdde2c]
データベースに格納されているサーバオプション、取引先プロファイル、TPA等の設定変更が頻繁に行われない場合、各キャッシュリフレッシュ間隔を延長しておくことにより、データベースアクセス負荷を軽減することができます。
*Hestia側RMI設定 [#RMI]
HestiaとEISが別サーバで稼働している場合、Hestiaが外部よりRMIを受け付けられるよう、起動オプションを修正する必要があります。
**Unix系 [#g72db083]
$HESTIA_HOME/bin/run.conf
JAVA_OPTS="$JAVA_OPTS \
-Djavax.net.ssl.trustStore=$HESTIA_HOME/server/default/data/hestia.jks \
-Djavax.net.ssl.trustStorePassword=hestia \
-Djavax.net.ssl.keyStore=$HESTIA_HOME/server/default/data/hestia.jks \
-Djavax.net.ssl.keyStorePassword=hestia \
-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx"
''java.rmi.server.hostname''オプションに、Hestiaが稼動しているホストのIPアドレスを指定してください。
**TPA設定 [#TPASetting]
***送信メッセージValidation [#d217828f]
Outboundメッセージにおいて、EISがあらかじめメッセージバリデーションを行っておりメッセージの正当性が保証されている場合、当オプションをOFFにすることにより、Hestia側でのメッセージバリデーション負荷を軽減できます。
***圧縮設定 [#s852690e]
プロトコルにRNIF2.0を利用する場合、更に取引先サーバが[[RNIF Technical Advisory - S/MIME Compression Issue 01.01.00:http://www.rosettanet.org]]に定義される送信コンテンツの圧縮をサポートしている場合、HTTP上に流れるメッセージのサイズを圧縮できるので送受信プロトコル上の負荷を軽減できます。
***HTTP1.1 chunk [#ye9f4f77]
取引先サーバの受信ポートがHTTP1.1 chunkモードをサポートしている場合、当オプションをtrueに設定することにより送信性能が向上する場合があります。特に大容量添付ファイルがある場合の巨大メッセージ送信時に有効です。
***最大HTTPコネクション数 [#t7af007c]
当設定値とサーバオプションのSenderスレッド数を増やすことにより、同時に処理できるHTTP送信セッション数が向上します。ただし取引先サーバへの負荷を増やすことになりますので注意が必要です。~
またFIFOモードの場合はOutbound時に同時に処理されるHTTPセッションは1つですので当設定は有効ではありません。
*JavaVM/JBoss [#m786ed7b]
**VM Heap Size [#z0cf5a1d]
サーバに潤沢なメモリ資源がある場合、最大ヒープサイズを調整の上、サーバオプションのEngine最大スレッド数、Sender最大スレッド数を調整することにより稼働率の向上が期待できる場合があります。
**RMI Garbage collection間隔 [#m3c5507f]
RMI Garbage collection間隔(デフォルト1分)を延長することにより、Hestia-EIS間で利用されているRMIのパフォーマンスの向上が期待できる場合があります。[[Enter The JBoss Matrix:http://jboss.org/jbossBlog/blog/acoliver/?permalink=If_you_dont_do_this_JBoss_will_run_really_slowly.txt]]に有用な情報があります。
Keyringファイル名、パスワード等は適時読み替えてください。
**HTTPコネクタ [#ce0e19f4]
HestiaはHTTPプロトコルの受信コネクタに
[[Apache Tomcat 5.5:http://tomcat.apache.org]]を使用しています。
**Windows系 [#sc46c1cb]
インストーラよりインストールした場合、HestiaはWindows Serviceとしてインストールされていますので、一旦Windows Serviceをアンインストールし再度インストールする必要があります。
***Windows Service解除 [#u2f9a448]
c:\> cd \hestia
c:\hestia> UninstallJBoss.bat
当バッチファイルはまず起動中のHestiaサーバを停止してからアンインストール処理を行います。既にHestiaサーバが停止している場合、UninstallJBoss.batファイルの17行目 '' net stop HestiaService''部分をコメントアウトしてください。
コネクション数、コネクションタイムアウト数、最大ポストサイズ等のTCPレベルの詳細なチューニングを行うことができます。コネクションが不足している場合や、巨大メッセージの受信のためにタイムアウトを延伸する必要がある場合などは、HTTPコネクタの設定によりHTTPレベルの問題が解決できる場合があります。
[[Apache Tomcat Configuration Reference - The HTTP Connector:http://tomcat.apache.org/tomcat-5.5-doc/config/http.html]]にHTTPコネクタの仕様書があります。
***設定ファイル編集 [#q94d4f79]
$HESTIA_HOME/bin/InstallJBoss.bat
set JAVA_OPTS=%JAVA_OPTS% \
-Djavax.net.ssl.trustStore="%JBOSS_KEYSTORE%\hestia.jks" \
-Djavax.net.ssl.trustStorePassword=hestia \
-Djavax.net.ssl.keyStore="%JBOSS_KEYSTORE%\hestia.jks" \
-Djavax.net.ssl.keyStorePassword=hestia \
-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx"
***Windows Service再インストール [#u051f4e7]
c:\hestia> InstallJBoss.bat
*Hestia側JMS設定 [#JMS]
RMIと同様に、HestiaとEISが別サーバで稼動しており、かつJMSキューにデフォルト設定(Hestiaサーバ上のJMSキュー)を利用している場合、外部EISからHestiaサーバ上のJMSキューに接続できるよう設定が必要となります。
$HESTIA_HOME/server/default/deploy/jms/uil2-service.xml
<attribute name="BindAddress">xxx.xxx.xxx.xxx</attribute>
該当箇所にHestiaが稼動しているホストのIPアドレスを指定してください。
*その他 [#m392aea3]
**EIS-Hestiaトランザクションモード [#df35fe9e]
EIS-Hestia間のトランザクションにおいてオートコミットモードをONにした場合、トランザクションコミットが不要となるためRMI通信のオーバヘッド負荷が半分に軽減されます。~
**クラスタリング [#db181eed]
Hestiaがサポートする負荷分散クラスタリングを利用することにより大量データの処理を複数のサーバへ負荷分散することができます。
*HTTP Port設定 [#HTTPPORT]
**未使用ポートの削除 [#ye4ca589]
Hestiaはデフォルトインストールで HTTP(8080), SSLサーバ認証(443), SSLクライアント認証(10443)の3ポートを作成します。
不要なポートの削除は $HESTIA_HOME/server/default/deploy/jbossweb-tomcat55.sar/server.xml のカスタマイズにより
行ないます。
<Connector acceptCount="100" address="${jboss.bind.address}" \
connectionTimeout="20000" disableUploadTimeout="true" emptySessionPath="true" \
enableLookups="false" maxHttpHeaderSize="8192" maxThreads="250" port="8080" \
redirectPort="8443" strategy="ms"/>
上記を以下のようにコメントアウトして下さい。
<!--
<Connector acceptCount="100" address="${jboss.bind.address}" \
connectionTimeout="20000" disableUploadTimeout="true" emptySessionPath="true" \
enableLookups="false" maxHttpHeaderSize="8192" maxThreads="250" port="8080" \
redirectPort="8443" strategy="ms"/>
-->
通常の本番運用においては、SSLサーバ認証もしくはSSLクライアント認証のみを利用します。
**HTTP受信バッファのカスタマイズ [#ra2842a9]
$HESTIA_HOME/server/default/deploy/jbossweb-tomcat55.sar/server.xml のカスタマイズにより
Hestiaのビジネスメッセージ受信口であるサーブレットのスレッド数、タイムアウト値などを
カスタマイズすることができます。
Hestiaはサーブレットコンテナとして [[Apache Tomcat 5.5:http://tomcat.apache.org]]を
使用しています。server.xmlのカスタマイズ項目については、
[[Apache Tomcat Configuration Reference - The HTTP Connector:http://tomcat.apache.org/tomcat-5.5-doc/config/http.html]]
を参照して下さい。
*キーストア設定 [#KEYSTORE]
*デプロイメント [#DEPLOYMENT]
*JavaVMのアップデート [#JVMUPDATE]
HestiaはJ2SE5 1.5.0_06にて動作検証されていますが、今後J2SEのBug Fix等によりマイナーアップデートが
リリースされた場合、アップデートのインストール後、以下のカスタマイズが必要になります。
**Unix系 [#a4027a22]
$HESTIA_HOME/bin/run.conf
JAVA_HOME="/usr/java/jdk"
上記箇所を、インストールしたアップデート版のパスに変更します。
**Windows系 [#h77f9551]
RMIの設定と同様に、一旦Hestia Windows Serviceのアンインストール、最インストールが必要です。
***Windows Service解除 [#z3a6a61a]
c:\> cd \hestia
c:\hestia> UninstallJBoss.bat
***設定ファイル編集 [#a19702e8]
$HESTIA_HOME/bin/InstallJBoss.bat
SET JAVA_HOME=c:\java\jdk1.5.0_06
上記JAVA_HOMEをインストールしたアップデート版のパスに変更します。
***Windows Service再インストール [#l4fcd398]
c:\hestia> InstallJBoss.bat
*クラスタリング [#CLUSTERING]
次バージョンアップ時に機能提供予定