負荷テスターの使用¶
このセクションでは、 DirectX サンプルの実行 での負荷テストの実行方法を紹介しています。サンプルの実行には、2 つのクラスタが必要です。1 つ目のクラスタが Genvid スタックを実行し、もう 1 つが負荷テストを実行します。負荷テスターは、開発目的のためにローカルで実行することもできます。
クラウドでのゲームの実行については、 クラウド環境 を参照してください。
このサンプルは、メトリクスを statsd に送信します。 TICK Stack メトリクス を使用して、メトリクスの収集、確認ができます。
In This Section
はじめに¶
テスト用のサンプルをローカルで実行することもできますが、負荷テストはクラウド上で実行することを前提としています。今回のデモでは DirectX サンプルの実行 を使用します。このサンプルをクラウドにデプロイする方法については クラウドの DirectX サンプルを作成する を参照してください。
設定ファイルの編集¶
負荷テストを行っている場合は、負荷バランサーや同様の構成で、パブリックなエントリーポイントを持つシステムが設定されいる可能性が高いです。クライアントが正しい設定を使用するように設定するには、 設定ファイル を修正するか、より複雑なログインプロトコルを使用している場合は、 app/src/cube_client.ts
ソースファイルの basic_session
関数を修正します。例えば、Cube サンプルには、以下のようなコードがあります。
// Starts the connection to the services
start() {
fetch("/api/public/channels/join", {
method: "POST",
})
.then((data) => data.json())
.then((res) => {
if (res.name === "Error") {
genvid.error(`Failed getting stream info: ${res.message}. Retrying in ${this.fiboStartIterator.get()} seconds...`);
setTimeout(() => {
this.start();
this.fiboStartIterator.next();
}, this.fiboStartIterator.get() * 1000);
} else {
this.onChannelJoin(res);
}
})
.catch((error) => genvid.error(`Can't get the stream info: ${error}`));
}
Web サーバー上の URL /api/public/channels/join
を取得します。 cube_client.ts
では、デフォルトでローカルホストを指すように設定されている設定キー custom.loadtester.join_url
の値を使用しています。代わりに、ジョインコールのパブリック URL を指すようにしてください。
参考
テスト用クラスタを作成する¶
最初のステップで、テストクライアントを実行するためのクラスタを作成します。ゲームと同じクラスタでサンプルを実行することもできますが、異なるリージョンの場合でも異なるクラスタで実行することをお勧めします。負荷テストに関連した追加コストが発生しますが、実際のゲーム体験にとても近いサンプルができます。
basic_cluster
クラスタモジュールを使用しますが、サーバーと内部インスタンスのみを使用します。
- Bastion UI で、
basic/basic_cluster
モジュールを使用してクラスタを作成します。このデモではloadtest
と呼びます。 infrastructure
のリンクをクリックします (今は、デフォルト設定を使用します)。Settings
メニューをクリックします。
# instance_game_count
、 instance_encoding_count
、 instance_public_count
を 0 に設定します。
- #
t2.large
のように、instance_internal_type
の大きなインスタンスを選択してinstance_internal_count
を 2 - 以上 (実行する負荷テスターインスタンスの数) に設定します。
Commands
メニューをクリックします。- Plan Apply をクリックして、よければ Apply し、完了まで待ちます。
負荷テスト用クラスタの初期化¶
テストクラスタを設定します。まず、クラスタを初期化します。
genvid-sdk -c loadtest setup
このクラスタでは SDK は実行されず、loadtester クライアントのみが実行されるため、 genvid-sdk load-config-sdk
コマンドを実行する必要はありません。次に、負荷テスタークライアントをビルドしてロードします。
py loadtester.py prepare # Install the genvid.js library and run npm install
py loadtester.py build-cloud
py loadtester.py -c loadtest upload-images --update-config
py loadtester.py -c loadtest load
注釈
また、両方のクラスタのメトリクスを収集するために、メトリクス集約スタックをインストールすることをお勧めします。 TICK Stack メトリクス のサンプルを参考にしてください。
py tick.py -c testcluster load
負荷テストサンプルの実行¶
他のサンプルと同じように負荷テスターを実行します。
genvid-sdk -c loadtest start
全てのジョブが起動しますが、 クラスタ UI のジョブ画面 を見ると、 loadtester
ジョブが停止していることがわかります。これはタスク数が 0 であるためです。UI から手動で追加するか、以下のコマンドを実行してください。
genvid-sdk -c loadtest set-taskgroup-count --step 1 --interval 5 loadtester 3
--step
は一度に生成する新しいタスクの数で、 --interval
は各ステップ間の秒単位の間隔です。その後は、タスク名 (loadtester
) とターゲットカウントです。詳細は genvid-sdk ツールを参照してください。
重要
実行できる負荷テスターの数は、クラスタで利用可能なリソースによります。多数起動できる場合は、 loadtest
クラスタに内部インスタンスを追加したり、より大きなインスタンスの使用をお試しください。