この記事は、intra-mart Advent Calendar 2013 第25日(最終回)の記事です。
今回は、負荷試験をintra-mart Accel Platformで構築したシステムに行う際に、考慮すべき設定について紹介します。
ResinのJVMオプション設定
負荷試験だけでなく、運用前には必ず、Javaのヒープサイズ等のJVMのオプション設定を変更してください。
設定例:
1 |
jvm_args : -Xmx2048m -XX:MaxPermSize=512m |
↑MaxHeapSize・MaxPermSizeを設定及びオプション設定
【注意】
Linux系OSの場合、 JVMオプションでtempディレクトリの指定をおこなわないと、 /tmp が利用されます。 cron等の設定により、定期的に/tmp配下の内容が削除される設定が標準で組み込まれている場合があります。
Resin では、作業用ディレクトリに展開した設定ファイル等の変更を検出した際に自動的に再起動が行われる場合があります。回避するためには下記のような設定を行います。
1 |
jvm_args : -Xmx2048m -XX:MaxPermSize=512m -Djava.io.tmpdir=/var/resin-tmp |
※-Djava.io.tmpdirに指定したディレクトリは事前に作成し、権限設定をお願いします。
任意のユーザでログインを行う
セキュア・トークン設定を無効化した上で、http://hogehoge.co.jp/imart/certificationにパラメータを指定してアクセスすることで任意のユーザで認証することが可能です。
詳細はintra-mart Advent Calendar 2013 第1日:iAPでもiWPみたいにURLだけでログインする方法 を参照してください。
https://dev.intra-mart.jp/blog/_intra-mart_advent_calendar_2013_1iapiwpurl/
jsspRpc、非推奨であるformタグを利用した業務画面の試験を行う
jsspRpcは、通常、セッションを利用したトークンチェックが都度行われるため、ログインを行うごとにトークンチェックに必要なパラメータの値が変更します。
このため、負荷試験のシナリオ生成時と同一のリクエストのパラメータを引き渡してもエラーとなってしまいます。
実現方法:
web.xmlを編集し、SecureJSSPServlet、および、jsspRpcServletのサーブレットパラメータ"security"の値を"false"に変更します。
WEB-INF/web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<servlet> <servlet-name>SecureJSSPServlet</servlet-name> <servlet-class>jp.co.intra_mart.system.servlet.jssp.SecureJSSPServlet</servlet-class> <init-param> <param-name>security</param-name> <param-value>false</param-value> </init-param> servlet> <servlet> <servlet-name>jsspRpcServlet</servlet-name> <servlet-class>jp.co.intra_mart.system.servlet.jssp.jsspRpcServlet</servlet-class> <init-param> <param-name>security</param-name> <param-value>false</param-value> </init-param> </servlet> |
多重アクセスを想定した試験を行う
リクエスト制御
intra-mart Accel Platformにはリクエストに対して同時に実行可能な数を制限する機能があります。
複数のユーザが同時アクセスを行うような試験を行う場合は、この制限に該当し、エラーとなってしまう可能性あるため、制限数を調整します。
実現方法:
リクエスト制御設定のthreadタグのmax属性に"0"を指定し、サーバの同時処理の制限をなくします。
WEB-INF/conf/request-control-config.xml
1 2 3 4 5 |
<request-control-config> <thread max="0"> ... </thread> </request-control-config> |
リクエスト制御設定については、以下を参照してください。
サーバの同時処理の制限
データソースへの最大コネクション数
アプリケーションサーバにより、データベースに同時に接続できる数が制限がかかる可能性があります。
アプリケーションサーバのデータソース設定にて、同時に接続可能な数が十分な値となることを確認してください。
アプリケーションサーバにResinを利用する場合は、resin-web.xmlを編集することにより変更可能です。
Resinでの最大コネクション数の変更については、以下を参照してください。
最大コネクション数設定
Resinのスレッド数を増やす
Resinのスレッド数を増やす場合は、以下のファイルの該当箇所を変更してください。
(Resinインストール先)/conf/resin.properties
1 2 3 4 5 |
# Throttle the number of active threads for a port port_thread_max : 256 accept_thread_max : 32 accept_thread_min : 4 # keepalive_max : 512 |
以上の設定は、負荷試験を動作させるために必要な設定です。
本番の商用環境や運用環境では、かならず、環境に応じた設定を行うことを推奨します。