開発者ブログ

SeleniumGrid環境の推奨構成

Last modified by msakai on 2017/04/21, 18:28

このページでは、Selenium Gridの実機でのパフォーマンス測定結果をもとに、Selenium Grid環境でPCブラウザのテストを行う際の推奨構成について記述しています。

想定スペック

動作させるPCのスペックは以下を想定しています。

  • OS: Windows 7 64bit
  • メモリ: 8GB
  • CPU: Intel Core i7

推奨構成

HubとNodeの構成

Selenium Grid 環境でPCブラウザのテストを行うには、以下のような構成を推奨します。

HubとNodeの配置同じPC上に共存してもよい
Nodeの設定値目安maxSession5~10maxSessionとmaxInstancesの最大値が
同じになるよう設定する
maxInstances各ブラウザ5~10
1Nodeで同時に処理するリクエスト数の目安最大でも50件程度に収まるとよい。
それを超える場合は、NodeもしくはSelenium Grid環境自体を増設し、リクエストを分散させることを検討する。

パフォーマンス測定結果

参考値として、複数件のテストを同時実行した際のパフォーマンス測定結果を以下に掲載しています。

Hubのパフォーマンス

HubにNodeを1-3台接続し、テストを実行して負荷を計測した結果、以下のようになりました。
各ノードにはIE11のみ登録し、maxSession/maxInstancesはすべて5件に設定しています。

Hub_25_1node_5inst.pngHub_100_1node_5inst.png
1Node / テストを25件同時実行1Node / テストを100件同時実行
Hub_100_2node_5inst.pngHub_100_3node_5inst.png
2Node / テストを100件同時実行3Node / テストを100件同時実行

Hubは動作時にメモリ消費がほとんどなく、接続ノード数とリクエスト数(テスト同時実行数)に応じてNodeへの振り分け時にやや負荷が生じています。

1つのHubに対して接続Node数が多い場合はHubとNodeを別マシン上に構築するのが望ましいですが、
Node数がそれほど多くない場合や、1NodeあたりのmaxSession/maxInstancesを小さく(推奨値内で)設定する場合は、
HubとNodeを同じPC上に構築する運用も可能と思われます。

Nodeのパフォーマンス

HubにNodeを1つ接続し、1NodeあたりのmaxSession/maxInstancesの設定を変えながら、テストのリクエストを50-100件同時に流して全件完了までの所要時間を計測しました。

# テスト1ケースあたりの所要時間は約18秒です。
# HubとNodeは同じPC上で起動しています。

Node数maxSession/maxInstancesテスト同時リクエスト数所要時間(秒)平均時間(秒)/件
(所要時間/リクエスト数)
平均並列動作数
(18秒×実行数/所要時間)
15502404.83.8
15753304.44.1
151004204.24.3
161003803.84.7
171003603.65.0
181003303.35.5
1505020044.5
150752603.55.2
1501003453.455.2

maxInstancesを5に設定した場合と50に設定した場合で比較すると、理論上は1/10の時間で実行されるはずですが、2割弱しか短縮されませんでした。(黄色の行)

maxInstancesを5から1ずつ増やして計測した結果、並列実行数8に設定した場合と50に設定した場合がほぼ同じ所要時間になりました。(水色の行)

つまり、maxInstancesを大きな数字に設定しても、実質同時に処理できる数には限界があり、5.5件前後に収まると考えられます。(「平均並列動作数」の列を参照)

一方で、リソース消費はmaxInstancesを50件に設定した場合の方が圧倒的に大きくなります。
また、その際、いくつかのテストがエラーで終了してしまいました。

1node_5inst.png1node_50inst.png
maxInstances5件に設定/テストを100件実行maxInstances50件に設定/テストを100件実行


以上から、NodeのmaxInstancesの設定はデフォルトの5件から最大10件程度に抑えておくのが最も効率的と思われます。
maxSessionは、そのNodeに登録したブラウザのmaxInstancesの最大値に設定しておきます。


Copyright (C) 2012-2017 NS Solutions Corporation, All Rights Reserved.