負荷テスターの使用

このセクションでは、 DirectX サンプルの実行 での負荷テストの実行方法を紹介しています。サンプルの実行には、2 つのクラスタが必要です。1 つ目のクラスタが Genvid スタックを実行し、もう 1 つが負荷テストを実行します。負荷テスターは、開発目的のためにローカルで実行することもできます。

クラウドでのゲームの実行については、 クラウド環境 を参照してください。

このサンプルは、メトリクスを statsd に送信します。 TICK Stack メトリクス を使用して、メトリクスの収集、確認ができます。

はじめに

テスト用のサンプルをローカルで実行することもできますが、負荷テストはクラウド上で実行することを前提としています。今回のデモでは DirectX サンプルの実行 を使用します。このサンプルをクラウドにデプロイする方法については クラウドの DirectX サンプルを作成する を参照してください。

設定ファイルの編集

負荷テストを行っている場合は、負荷バランサーや同様の構成で、パブリックなエントリーポイントを持つシステムが設定されいる可能性が高いです。クライアントが正しい設定を使用するように設定するには、 設定ファイル を修正するか、より複雑なログインプロトコルを使用している場合は、 app/src/cube_client.ts ソースファイルの basic_session 関数を修正します。例えば、キューブのサンプルでは、以下のようなコードがあります。

    // Starts the connection to the services
    start() {
        fetch("/api/public/channels/join", {
                method: "POST"
            })
            .then(data => data.json())
            .then(res => this.onChannelJoin(res))
            .catch(error => genvid.error(`Can't get the stream info: ${error}`));
        }

ウェブサーバー上の URL /api/public/channels/join を取得します。 cube_client.ts では、デフォルトでローカルホストを指すように設定されている設定キー custom.loadtester.join_url の値を使用しています。代わりに、ジョインコールのパブリック URL を指すようにしてください。

テスト用クラスタを作成する

最初のステップで、テストクライアントを実行するためのクラスタを作成します。ゲームと同じクラスタでサンプルを実行することもできますが、異なるリージョンでも異なるクラスタで実行することをお勧めします。負荷テストに関連した追加コストが発生しますが、結果は、実際のゲーム体験のサンプルとなります。

basic_cluster クラスタモジュールを使用しますが、サーバーと内部インスタンスのみを使用します。

  1. Bastion UI で、 basic/basic_cluster モジュールを使用してクラスタを作成します。このデモでは loadtest と呼びます。
  2. infrastructure のリンクをクリックします (今は、デフォルト設定を使用します)。
  3. Settings メニューをクリックします。

# instance_game_countinstance_encoding_countinstance_public_count を 0 に設定します。

# t2.large のように、 instance_internal_type の大きなインスタンスを選択して instance_internal_count を 2
以上 (実行する負荷テスターインスタンスの数) に設定します。
  1. Commands メニューをクリックします。
  2. 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 クラスタに内部インスタンスを追加してみたり、より大きなインスタンスを使用したりしてみてください。