開発Blog

iWP Ver7.xでのチューニング

投稿日:2010-09-29 更新日:

開発本部の大西です。
開発は半期末とかあまり関係ないと思いきや、諸般の事情でいろいろと大変な今日この頃です。

江本さんがebuilderのネタばかり書くので、傷食気味にならないように、季節柄、チューニングネタを書かせていただきます。
intra-martのチューニングは、基本は、confディレクトリのhttp.xmlとimart.xmlで7~8割方完了します。
というか、「DBMS」と「プログラム」以外の設定ファイルでのチューニングは、あまり目に見えた効果はありません。
また、チューニングと言っても、どちらかというと安定運用のためのチューニングで、高速化という面はあまり期待しないでください。
題名にVer7.xと書いていますが、Ver5.0以降には、流用できる内容だと思います。

あと、下記で提示している値は、経験からの数値です。
こんな事自体を書くような世の中になって悲しいのですが、各環境にあわせて、最適値をまさにチューニングしてください。そのとおりにしたら、動かねーぞ!こら!とか、根拠出せ、比較資料出せとかそんな不精なことは言われると心が折れますし、こういう紹介自体もできなくなるので、お控えください。お願いします・・・。

 

APサーバ[http.xml]でのチューニング

では、http.xmlのチューニングから、

Resinの最大スレッド数の変更

デフォルト:

256(256スレッドになっている。)

Resinのhttpdサーバの機能を利用するのであれば、上記ではhttpアクセスのセッション分が不足するので、
スレッド数を増やすことが必須。または、原則、Webサーバ(Apache)を立てることを推奨します。
増やすと言っても、5120とか1万とかしても、動けないので、512ぐらいが限界だと思います。
なお、64bitOSの場合など、ヒープサイズが4G以上など潤沢に用意出来る場合などは、1024など大きめの値に設定することも可能です。

セッションタイムアウト時間

デフォルトは10分ですが、

10

よく、1時間とかひどい場合24時間としている場合があります。
1時間であれば、長すぎるということはないですが、無駄なセッションオブジェクトが、最大60分残留する可能性があるので、セッションタイムアウト時間は、デフォルト値の10分などの短めにして、imart.xmlでのsession-auto-keepを有効にすることを推奨します。
その反面、クライアントで、ブラウザを立ち上げている限り、セッションは生き続けるので、離席時は、スクリーンセーバーで、パスワードロックするなどのリテラシーは必要かと思います。

データベースへの接続数

デフォルト値は、

20

となっているので、高負荷時にコネクションが不足する可能性があるので、100ぐらいに増やしておくのがベター。

データベースコネクションの維持時間

データベースコネクションの維持時間は、デフォルト

30s

となっており、AP-DB間の無通信30秒でコネクションがCloseされる。
せっかく、コネクションプーリングしているので、1時間(1h)や1日(1D)など長めの時間がよいと思われます。

プリペアドステートメントキャッシュサイズの変更

プリペアドステートメントキャッシュサイズが、デフォルト

8

と8個になっているので、300など大きめの数字にするのがよいと思われます。

APサーバ[imart.xml]でのチューニング

 

ネットワークコネクション数の変更

 

intra-mart/platform/network/client/connection

デフォルト値が、8になっているので、さすがにこれでは少ないので、これを、100~300程度まで増やす。

ServicePlatformのスレッド数の変更

intra-mart/platform/network/server/threads

デフォルト値が、32になっているので、さすがにこれでは少ないので、これも、100~300程度まで増やす。
なぜ、300程度かというと、だいたい、CPU1コアあたり、200スレッド程度しか動作しないと思います。最近は2~4コアが主流なので、計算上、400~800スレッドとなりますが、上記のResinのスレッド等を考えると300程度が無難だと思います。

Javaのチューニング

GCのチューニングを目的としたJavaVMのチューニングがされてないことが多いです。
とりあえず、チューニングしておきたいということであれば、
あと、この時代に、32bitOSで、32bitJDKで運用しようというところは減ったと思いますが、ヒープを1GBにしたい場合、

-Xms1024m -Xmx1024m -XX:NewSize=276m -XX:MaxNewSize=276m -XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80 -XX:PermSize=128m -XX:MaxPermSize=128m

な設定にしておくと無難だと思います。その後、VisualGCとかで、値を詰めていくのはかなり面白いです。
ちなみに、Javaのヒープサイズの落しどころは、

    1. 32bitの場合:-Xms1.2g -Xms1.2g
    2. 64bitの場合、-Xms4g -Xms4g

ぐらいかな?と思います。
(当然、搭載メモリ量以上、設定するなんて、ことはしないですよね?)

APサーバ[web.xml]でのチューニング

<p可能であれば、以下のServletFilterを無効にできるか検討してください。
(web.xmlのマッピングされているフィルターをコメントアウト等で削除する。)

    1. 画面遷移ログを取得するフィルタ:(TransitionLogFilter)
    2. 文字化け回避フィルタ:(LuxuryResponseWriterFilter)
    3. im-JavaEE Framework用パラメータ設定補助フィルタ:(FrameworkParameterSettingFilter)
    4. 外部アプリケーション接続モジュールでのURL変換フィルタ:(AbsoluteLinkFilter)
    5. ホットデプロイフィルタ:(hotdeployFilter)
    6. アクティブセッションを制御するフィルタ:(ActiveSessionFilter)
    7. 二重ログインチェックフィルタ:(DuplicateLoginHandlingFilter)

※詳細は、ServicePlatform設定ガイドを参照ください。
特に、ホットデプロイフィルタは、運用環境では不要ですので、外すことをおすすめします。

その他サーバ[imart.xml]でのチューニング

 

データプールサイズの変更

sizeをtreasure/boxとtrash配下のファイルの数を指定してください。

Javaのチューニング

上の記載と同じです。

スクリプトベースのコンパイル設定

意外に知られていないのですが、
pages/platform/src/source-config.xml
pages/src/source-config.xml
にて、スクリプト開発モデルので、jsファイルやhtmlファイルのコンパイル指定が可能です。

    1. resource-file/javascript/compiler/enable
    2. resource-file/view/compiler/enable

をfalseからtrueにすることにより、自動コンパイルされ、再起動するまで、コンパイルされたもので動作します。
falseの場合、インタプリタで動作しますので、運用環境では、自動コンパイルで動作させる方が良いと思います。

アクティブセッション管理の無効化

v6.1以降では、セッション状況を管理する機能、アクティブセッション管理機能があり、ログイン、ログアウト、各リクエスト単位で、DBのテーブル(B_M_ACTIVE_SESSION_INFO)に更新処理が実行されています。
二重ログイン制御機能を使っておらず、システム管理者やログイングループ管理者で各ログイングループのユーザのセッションを明示的に無効化する必要がない場合は、この機能を無効化することで、各リクエスト毎での不要なDBアクセスがなくなりますので、DB側の負荷を下げることができます。

設定方法は、SeerverManagerのconf/active-session-config.xmlファイルを編集し、<group-default>タグの下に、

を追加してください。

DBサーバでのチューニング

INDEXはなるべく張るようにしてください。
BPWといわれる現行のドキュメントワークフローであれば、storage/bpw/database
スタートパックであれば、 storage/startpack/data/basic
にindex用のDDLがあります。

主な、チューニング個所は以上の部分になります。これらを参考にして、インストール状態での運用は避けていただき、熟睡できる日々を取り戻しましょう。

-開発Blog
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

IM-ContentsSearchでの「あいまい検索」

最近、IM-ContentsSearchの導入事例が増えてきており、以下のようなご質問を受けることが多くなって来ました。 Q:IM-ContentsSearchで「あいまい検索」は可能でしょうか。 例 …

no image

Formaパッチ2リリース!さらに楽しく、使いやすく改良♪

IM-FormaDesigner Ver.7.2のパッチ2を本日、リリースいたしました。 パッチ2では、IM-共通マスタとIM-Workflowの画面アイテムの追加や、後処理機能の追加等々を行っていま …

no image

「印影機能」をさくっと試してみる

今日は IM-Workflow Ver.7.2 のパッチ6で追加された「印影機能」を動かしてみます。 「印影機能」は、以下の準備が必要です。 ワークフローパラメータで「印影の使用可否」を「使用する」に …

no image

Formaボタンアイテムのクリック時に任意の処理を追加するには

今回のブログ記事では、ボタンアイテムのクリック時に呼び出されるアイテム固有の処理(データの登録・画面遷移など)の前に、入力値の加工など独自の業務処理をスクリプトとして実行する方法を紹介します。 &nb …

no image

IM-Workflowで承認時にも認証を行う方法

IM-Workflowでは、本当に本人が申請・承認しているかを証明するための仕組みとして、「認証確認(再認証)」を設定することができます。 この仕組みを利用すると、ワークフローの申請・承認を行うタイミ …

まだデータがありません。

RSSRSSRSSRSS