パフォーマンス チューニングのチェックリスト

  1. サーバー レベルでのイベント モニタリングとヒット統計をオフにします。( イベント モニタリングとヒット統計を無効にする を参照)
  2. Tomcat コネクターの設定を行います。(Tomcat の設定 を参照)
  3. ログレベルを INFO に設定し、SSL デバッグなどの JVM レベルのデバッグ ログを無効にします。
  4. データ ソースのキャッシュを有効にします。さもないと、 データソースにファイル システムの読み取り制限が適用されます。
  5. JVM のヒープ メモリを増やし、ガベージ コレクション オプションを適用します。システム プロパティの設定 を参照)
  6. 可能な限り、フォーム ビューではなくリテラル ビューを使用します。リテラルビューでは、階層的なパラメータライゼーションがサポートされています。

最高のパフォーマンスを得るための設定

Virtualize サーバーを最高のパフォーマンスでご利用いただくために、以下の設定を推奨します。

サーバーは常に「ヘッドレス モード」で実行する

Tomcat などの Web サーバーに soavirt.war をデプロイするか、Virtualizecli 実行ファイルで Virtualize アプリケーションを起動します。

例:

virtualizecli.sh -startServer -data <WORKSPACE_LOCATION>

イベント モニタリングとヒット統計を無効にする

負荷テストを開始する前に、必ずサーバーとすべてのワークステーションの両方で仮想アセットのモニタリングを停止してください。
また、次の操作を行ってモニタリングを完全に無効にできます。

  1. [Virtualize Server] ビューで、目的のサーバー ノードをダブルクリックします。
  2. [サーバー構成]タブで、[イベント レポート サービスの有効化] および [統計収集サービスの有効化] チェックボックスをオフにし、保存します。
  3. サーバーを停止して再起動します。

この操作は、ヘッドレス デプロイの場合、Continuous Testing Platforms のサーバーページからも行うことができます。

Tomcat の構成

Virtualize で最高のパフォーマンスを得るには、次のシステム プロパティを設定し、Tomcat の server.xml にいくつかの変更を加えます。

システム プロパティの設定

起動時に JVM プロパティを設定し、ヒープ メモリを増やし (少なくとも4 GB)、ガベージコレクタを変更します。

Virtualizecli の場合:

virtualizecli.sh -startServer -data <WORKSPACE_LOCATION> -J-Xms2048m -J-Xmx4096m -J-server -J-XX:+DisableExplicitGC -J-XX:+UseCompressedOops -J-XX:NewRatio=1

WAR デプロイの場合 (<TOMCAT_HOME>/bin/setenv ファイルで設定):

JAVA_OPTS=-Xms2048m -Xmx4096m -XX:+DisableExplicitGC -XX:+UseCompressedOops -XX:NewRatio=1

server.xml の設定

  1. <TOMCAT_HOME>/conf フォルダーの下にある server.xml ファイルで HTTP Connector 要素を探します。デフォルトのコネクタ ポートは、virtualizecli の場合は9080、Tomcat にデプロイされた WAR の場合は 8080 です。
  2. acceptorThreadCount、enableLookups、maxThreads の各属性を以下のように追加/更新します。

    例:

    <Connector URIEncoding="UTF-8" acceptorThreadCount="2" connectionTimeout="20000" enableLookups="false" maxThreads="750" name="default" port="9080" protocol="HTTP/1.1" redirectPort="9443" server="Parasoft Server"/>

    これは、Tomcat に 750 スレッドの処理スレッド プールを保持するように指示します。また、アクセプタのスレッド数を 2 に設定し、DNS ルックアップを無効にします。

  3. ファイルの下部にある Valve 要素を探します。

  4. 次のように、Valve 要素をコメントアウトします。
    例:

    <!--<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false" /> -->

これにより、サーバーにアクセスするたびに、Tomcat がログの場所にログ情報を入力するのを防ぐことができます。

OS の設定

Windows

Windows を使用している場合、レジストリで調整できるパラメーターがいくつかあります。

  1. [スタート] > [実行] > [regedit] をクリックします。
  2. 次のレジストリ キーに移動します。 

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. Parameters を右クリックし、[新規] > [DWORD] を選択します。
  4. 値に MaxUserPort という名前を付け、値のデータを 7FA6 (16進数) または 32678 (10進数) に更新します。
  5. Parameters を右クリックし、[新規] > [DWORD] を選択します。
  6. 値に TcpTimedWaitDelay という名前を付け、値データを 1E (16進数) または 30 (10進数) に更新します。
  7. この設定を有効にするには、マシンを再起動する必要があります。

これにより、Windows で許可される TCP 同時接続数 (MaxUserPort) が増加し、未使用の TCP ポートが再使用可能になるまでの予約時間 (TcpTimedWaitDelay) が短縮されます。

Linux

高スループットを実現するために、Linux サーバーをチューニングする必要があるかもしれません。以下に、参考となるシステム設定を示します。これらは Virtualize と負荷生成ツールに適用する必要があります。

ulimit -u 4096

1 人のユーザーが利用できるプロセスの最大数を設定します。java スレッドはプロセスであり、この数が少なすぎると、新しいスレッドを生成できなくなる可能性があるため、これは重要です。

sysctl -w net.ipv4.tcp_tw_reuse=1   sysctl -w net.ipv4.tcp_tw_recycle=1

これらは、OS がネットワーク ソケットを素早く再利用したりリサイクルしたりすることを可能にします。これは、高負荷時にはソケットが頻繁に使用されたり破棄されたりするので重要です。

sysctl.conf

tcp のバッファを調整する必要があるかもしれません。sysctl のいくつかのパラメータは、ネットワークの設定に応じて変更できます。  詳細は Linux Tuning ドキュメントを参照してください。

Virtualize と Data Repository のデプロイ

Virtualize サーバーと Data Repository サーバーの間のネットワーク遅延は、できる限り最小限に抑えることをお勧めします。プロセス間のネットワーク遅延は、負荷時の Virtualize サーバーのパフォーマンスに悪影響を与えます。ユーザーがこれを達成する最も一般的な方法は、同じマシン、または可能な限り同じ場所 (同じデータセンター領域など) に配置された 2 台のマシンにインストールすることです。Data Repository サーバーは大量のメモリを消費するので、Virtualize サーバーと同じマシンにインストールする場合は、32 GB 以上の RAM を搭載したマシンを推奨します ( デプロイメントの推奨事項 を参照)。

デバッグのチェックリスト 

  1. 仮想アセットのパフォーマンス プロファイルと追加の遅延をオフにします。
  2. 問題は特定のアセットに関連していますか ? 他のアセットは以前と同じように機能していますか ?
  3. 使用されていないレスポンダーやデータソース行がある場合、それらを無効にしたり、完全に削除したりできますか?
  4. アセットにスクリプトが含まれていないかを確認します。それらを無効にした場合、問題は解消されますか ?
  5. アーティファクトをホストしているネットワーク共有ドライブはありますか ?
  6. 別のサーバーで同じ条件で問題が再現しますか ?
  • No labels