ここでは、次のテストのためのテスト固有の構成、チューニング、および結果を示します。
パフォーマンスの特性を示すために、次の測定基準を使用しました。
1 秒あたりの操作数 (ops/秒) = 1 秒あたりの正常なトランザクション数
1 つのトランザクションに対する応答時間 (ラウンドトリップ時間) (ミリ秒単位)
パフォーマンスとスケーラビリティーの図は、システムで有効になっているコアの数に対するスループット (ops/秒) を示しています。
このテストは、それぞれ 1K 〜 1000K バイトのサイズの 36 のファイルを含む、10,000 のディレクトリのプールからランダムに選択されたファイルの静的なダウンロードを使用して実行されました。静的コンテンツテストの目標は、コアを飽和させ、それぞれのスループットと応答時間を調べることでした。
このテストでは、次の構成を使用しました。
ストライプ化ディスクアレイ (Sun StorEdge 3510) 上に静的ファイルを作成しました。
複数のネットワークインタフェースを設定しました。
Web Server を 64 ビットに設定しました。
次の表で説明されているチューニング設定を使用してファイルキャッシュを有効にしました。
デフォルト |
チューニング値 |
---|---|
enabled=true max-age=30 sec max-entries=1024 sendfile=false max-heap-file-size=524288 max-heap-space=10485760 max-mmap-file-size=0 max-mmap-space=0 |
enabled=true max-age=3600 max-entries=1048576 sendfile=true max-heap-file-size=1200000 max-heap-space=8000000000 max-mmap-file-size=1048576 max-mmap-space= l max-open-files=1048576 |
次の表は、静的コンテンツのスケーラビリティーの結果を示しています。
表 6–4 静的コンテンツのスケーラビリティー
コアの数 |
平均スループット (ops/秒) |
平均応答時間 (ミリ秒) |
---|---|---|
2 |
10365 |
184 |
4 |
19729 |
199 |
6 |
27649 |
201 |
次の図は、静的コンテンツのスケーラビリティーの結果を示すグラフ表示です。
このテストは、サーブレットを使用して実行されました。このテストは、サーブレットの初期化引数、環境、要求ヘッダー、接続とクライアントの情報、URL 情報、およびリモートユーザー情報を出力します。サーバーには、JVM のチューニング設定を適用しました。目標は、サーバー上のコアを飽和させ、それぞれのスループットと応答時間を調べることでした。
次の表は、このテストで使用された JVM のチューニング設定を示しています。
表 6–5 JVM のチューニング設定
デフォルト |
チューニング値 |
---|---|
-Xmx128m -Xms256m |
-server -Xrs -Xmx2048m -Xms2048m -Xmn2024m -XX:+AggressiveHeap -XX:LargePageSizeInBytes=256m -XX:+UseParallelOldGC -XX:+UseParallelGC -XX:ParallelGCThreads=<number of cores> -XX:+DisableExplicitGC |
次の表は、動的コンテンツサーブレットテストの結果を示しています。
表 6–6 動的コンテンツテスト: サーブレットのスケーラビリティー
コアの数 |
平均スループット (ops/秒) |
平均応答時間 (ミリ秒) |
---|---|---|
2 |
5287 |
19 |
4 |
10492 |
19 |
6 |
15579 |
19 |
次の図は、サーブレットのスケーラビリティーの結果を示すグラフ表示です。
このテストは、printenv という名前の C 実行可能ファイルにアクセスすることにより実行されました。この実行可能ファイルは、環境変数情報を出力します。サーバーには、CGI のチューニング設定を適用しました。目標は、サーバー上のコアを飽和させ、それぞれのスループットと応答時間を調べることでした。
次の表は、このテストで使用された CGI のチューニング設定を示しています。
表 6–7 CGI のチューニング設定
デフォルト |
チューニング値 |
---|---|
idle-timeout=300 cgistub-idle-timeout=30 min-cgistubs=0 max-cgistubs=16 |
idle-timeout=300 cgistub-idle-timeout=1000 min-cgistubs=100 max-cgistubs=100 |
次の表は、C CGI に対する動的コンテンツテストの結果を示しています。
表 6–8 動的コンテンツテスト: C CGI のスケーラビリティー
コアの数 |
平均スループット (ops/秒) |
平均応答時間 (ミリ秒) |
---|---|---|
2 |
892 |
112 |
4 |
1681 |
119 |
6 |
2320 |
129 |
次の図は、C CGI のスケーラビリティーの結果を示すグラフ表示です。
このテストは、CGI 環境を出力する printenv.pl という名前の Perl スクリプトを使用して実行されました。サーバーには、CGI のチューニング設定を適用しました。目標は、サーバー上のコアを飽和させ、それぞれのスループットと応答時間を調べることでした。
次の表は、Perl CGI に対する動的コンテンツテストで使用された CGI のチューニング設定を示しています。
表 6–9 CGI のチューニング設定
デフォルト |
チューニング値 |
---|---|
idle-timeout=300 cgistub-idle-timeout=30 min-cgistubs=0 max-cgistubs=16 |
idle-timeout=300 cgistub-idle-timeout=1000 min-cgistubs=100 max-cgistubs=100 |
次の表は、Perl CGI に対する動的コンテンツテストの結果を示しています。
表 6–10 動的コンテンツテスト: Perl CGI のスケーラビリティー
コアの数 |
平均スループット (ops/秒) |
平均応答時間 (ミリ秒) |
---|---|---|
2 |
322 |
310 |
4 |
611 |
327 |
6 |
873 |
343 |
次の図は、Perl CGI のスケーラビリティーの結果を示すグラフ表示です。
このテストで使用された NSAPI モジュールは printenv2.so です。このモジュールは、NSAPI 環境変数を、応答全体を 2K バイトにするためのテキストとともに出力します。目標は、サーバー上のコアを飽和させ、それぞれのスループットと応答時間を調べることでした。
このテストのための唯一のチューニングは、未使用のパスチェックを削除することによる obj.conf 内のパスチェックの最適化でした。
次の表は、NSAPI に対する動的コンテンツテストの結果を示しています。
表 6–11 動的コンテンツテスト: NSAPI のスケーラビリティー
コアの数 |
平均スループット (ops/秒) |
平均応答時間 (ミリ秒) |
---|---|---|
2 |
26264 |
14 |
4 |
12520 |
15 |
6 |
18417 |
16 |
次の図は、NSAPI のスケーラビリティーの結果を示すグラフ表示です。
PHP は、Web ベースの動的コンテンツの作成に特化した、広く使用されているスクリプト言語です。その単純性、アクセシビリティー、使用可能なモジュールの多さ、容易に使用可能なアプリケーションの多さなどで、インターネット上での使用がもっとも急速に拡大しているスクリプト言語です。
Web Server のスケーラビリティーと PHP エンジンの汎用性が組み合わされて、動的コンテンツのための、パフォーマンスの高い柔軟な Web 配備プラットフォームが提供されます。これらのテストでは、PHP バージョン 5.1.6 を使用しました。
テストは、次の 2 つのモードで実行されました。
Sun Java System Web Server 7.0 で使用可能な FastCGI プラグインを使用して呼び出されるアウトプロセスの fastcgi-php アプリケーション (http://www.zend.com/sun/ からダウンロード可能になる予定)。
インプロセスの PHP NSAPI プラグイン。
テストでは、phpinfo() クエリーを実行しました。目標は、サーバー上のコアを飽和させ、それぞれのスループットと応答時間を調べることでした。
次の表は、FastCGI プラグインテストのために使用した Web Server のチューニング設定を示しています。
表 6–12 FastCGI プラグインテストのためのチューニング設定
次の表は、FastCGI テストを使用した PHP の結果を示しています。
表 6–13 FastCGI を使用した PHP のスケーラビリティー
コアの数 |
平均スループット (ops/秒) |
平均応答時間 (ミリ秒) |
---|---|---|
2 |
876 |
114 |
4 |
1706 |
117 |
6 |
2475 |
121 |
次の図は、FastCGI を使用した PHP のスケーラビリティーを示すグラフ表示です。
次の表は、NSAPI テストを使用した PHP のための Web Server のチューニング設定を示しています。
表 6–14 PHP のための NSAPI プラグイン設定
次の表は、NSAPI テストを使用した PHP の結果を示しています。
表 6–15 NSAPI を使用した PHP のスケーラビリティー
コアの数 |
平均スループット (ops/秒) |
平均応答時間 (ミリ秒) |
---|---|---|
2 |
950 |
105 |
4 |
1846 |
108 |
6 |
2600 |
115 |
次の図は、NSAPI を使用した PHP のスケーラビリティーを示すグラフ表示です。
このテストは、それぞれ 1K 〜 1000K バイトのサイズの 36 のファイルを含む、10,000 のディレクトリのプールからランダムに選択されたファイルの静的なダウンロードを使用して実行されました。SSL 静的コンテンツテストの目標は、コアを飽和させ、それぞれのスループットと応答時間を調べることでした。このテストには T2000 の 4 コアのみを使用しました。
このテストでは、次の構成を使用しました。
ストライプ化ディスクアレイ (Sun StorEdge 3510) 上に静的ファイルを作成しました。
複数のネットワークインタフェースを設定しました。
表 6–3 にある設定を使用してファイルキャッシュを有効にし、チューニングしました。
表 6–2 にある設定を使用して SSL セッションキャッシュをチューニングしました。
Web Server を 64 ビットに設定しました。
次の表は、SSL 静的コンテンツテストの結果を示しています。
表 6–16 SSL パフォーマンステスト: 静的コンテンツのスケーラビリティー
コアの数 |
平均スループット (ops/秒) |
平均応答時間 (ミリ秒) |
---|---|---|
2 |
2284 |
379 |
4 |
4538 |
387 |
6 |
6799 |
387 |
次の図は、SSL を使用した静的コンテンツのスケーラビリティーを示すグラフ表示です。
このテストは、SSL モードで CGI 環境を出力する printenv.pl という名前の Perl スクリプトを使用して実行されました。SSL セッションキャッシュを有効にした状態で、SSL モードでテストを実行しました。目標は、サーバー上のコアを飽和させ、それぞれのスループットと応答時間を調べることでした。
次の表は、SSL Perl CGI テストの結果を示しています。
表 6–17 SSL パフォーマンステスト: Perl CGI のスケーラビリティー
コアの数 |
平均スループット (ops/秒) |
平均応答時間 (ミリ秒) |
---|---|---|
2 |
303 |
329 |
4 |
580 |
344 |
6 |
830 |
361 |
次の図は、SSL を使用した Perl のスケーラビリティーを示すグラフ表示です。
このテストは、SSL モードで printenv という名前の C 実行可能ファイルにアクセスすることにより実行されました。この実行可能ファイルは、環境変数情報を出力します。SSL セッションキャッシュを有効にした状態で、SSL モードでテストを実行しました。目標は、サーバー上のコアを飽和させ、それぞれのスループットと応答時間を調べることでした。
次の表は、SSL CGI テストの結果を示しています。
表 6–18 SSL パフォーマンステスト: C CGI のスケーラビリティー
コアの数 |
平均スループット (ops/秒) |
平均応答時間 (ミリ秒) |
---|---|---|
2 |
792 |
126 |
4 |
1499 |
133 |
6 |
2127 |
141 |
次の図は、SSL を使用した C CGI のスケーラビリティーを示すグラフ表示です。
このテストで使用された NSAPI モジュールは printenv2.so です。このモジュールは、NSAPI 環境変数を、応答全体を 2K バイトにするためのテキストとともに出力します。SSL セッションキャッシュを有効にした状態で、SSL モードでテストを実行しました。目標は、サーバー上のコアを飽和させ、それぞれのスループットと応答時間を調べることでした。
次の表は、SSL NSAPI テストの結果を示しています。
表 6–19 SSL パフォーマンステスト: NSAPI のスケーラビリティー
コアの数 |
平均スループット (ops/秒) |
平均応答時間 (ミリ秒) |
---|---|---|
2 |
2729 |
29 |
4 |
5508 |
30 |
6 |
7982 |
32 |
次の図は、SSL を使用した NSAPI のスケーラビリティーを示すグラフ表示です。
電子商取引アプリケーションは、データベースを利用してオンラインショッピングのシミュレーションを行う、より複雑なアプリケーションです。
電子商取引の調査は、次のハードウェアを使用して実行されました。
Web Server のシステム構成:
Sun Microsystems Sun Fire 880 (900MHz US-III+)。このテストには 4 個の CPU のみを使用しました。
16384M バイトのメモリー
Solaris 10 オペレーティングシステム
データベースのシステム構成:
Sun Microsystems Sun Fire 880 (900MHz US-III+)
16384M バイトのメモリー
Solaris 10 オペレーティングシステム
Oracle 10.1.0.2.0
ドライバのシステム構成:
Sun Microsystems Sun Fire 880 (900MHz US-III+)
Solaris 10 オペレーティングシステム
ネットワーク構成:
Web Server、データベース、およびドライバマシンをギガビット Ethernet リンクで接続しました。
電子商取引テストは、次のチューニング設定を使用して実行されました。
JDBC のチューニング:
<jdbc-resource> <jndi-name>jdbc/jwebapp</jndi-name> <datasource-class>oracle.jdbc.pool.OracleDataSource</datasource-class> <max-connections>200</max-connections> <idle-timeout>0</idle-timeout> <wait-timeout>5</wait-timeout> <connection-validation>auto-commit</connection-validation> <property> <name>username</name> <value> db_user </value> </property> <property> <name>password</name> <value> db_password </value> </property> <property> <name>url</name> <value>jdbc:oracle:thin:@db_host_name:1521:oracle_sid</value> </property> <property> <name>ImplicitCachingEnabled</name> <value>true</value> </property> <property> <name>MaxStatements</name> <value>200</value> </property> </jdbc-resource
JVM のチューニング:
-server -Xmx1500m -Xms1500m -Xss128k -XX:+DisableExplicitGC
このテストでは、大量のインベントリからアイテムを販売する電子商取引 Web サイトをモデル化しました。その実装には、標準的な Web アプリケーションのモデル/表示/制御のデザインパターンを使用しています。ユーザーインタフェース (つまり、表示) は、1 つのマスター制御サーブレットとインタフェースする 16 種類の JSP ページで処理されます。このサーブレットは、モデルとして機能して 27 種類のクエリーを処理するデータベースへの JDBC 接続を維持しています。これらの JSP ページは JSP タグライブラリを広範囲に使用しており、ほぼ 2000 行のロジックで構成されます。
データベースには、1000 個の注文可能なアイテム (やはり 1000 のカーディナリティーを持つ 2 つの関連するテーブルがある)、72000 の顧客 (2 つの関連するテーブルがある)、および 190 万の注文 (2 つの関連するテーブルがある) が含まれています。標準の JDBC 接続が、準備済み文と次の標準の JDBC 設計原則を使用してデータベース接続を処理します。
ランダムに選択されたユーザーがオンラインショッピングを実行します。複合作業負荷で次の操作が使用されました。各操作は、操作の優先順位に従って実行されました。Home、AdminConfirm、AdminRequest、BestSellers、BuyConfirm、BuyRequest、CustomerRegistration、NewProducts、OrderDisplay、OrderInquiry、ProductDetail、SearchRequest、SearchResults、および ShoppingCart。
読み込みの起動には Faban ドライバを使用しました。思考時間を負の指数分布から選択しました。最小の思考時間は 7.5 秒、最大の思考時間は 75 秒でした。システムがサポートできる並行ユーザーの最大数を、次の合格条件に基づいて決定しました。
表 6–20 パフォーマンステストの合格条件
トランザクション |
90 パーセンタイルの応答時間 (秒) |
---|---|
HomeStart |
3 |
AdminConfirm |
20 |
AdminRequest |
3 |
BestSellers |
5 |
BuyConfirm |
5 |
BuyRequest |
3 |
CustomerRegistration |
3 |
Home |
3 |
NewProducts |
5 |
OrderDisplay |
3 |
OrderInquiry |
3 |
ProductDetail |
3 |
SearchRequest |
3 |
SearchResults |
10 |
ShoppingCart |
3 |
次の表は、電子商取引 Web アプリケーションテストの結果を示しています。
表 6–21 電子商取引 Web アプリケーションのスケーラビリティー
CPU の数 |
ユーザー |
スループット (ops/秒) |
---|---|---|
2 |
7000 |
790 |
4 |
11200 |
1350 |
次の図は、電子商取引 Web アプリケーションのスケーラビリティーを示すグラフ表示です。
次の図は、電子商取引 Web アプリケーションのスケーラビリティーを示すグラフ表示です。