圧力テストツール(Artillary)を使用して性能を測定する


これらの内容は101級現在の大手企業開発者Puとともに本格的なバックエンドシステム実務!課程に基づいています.

😀 n/a.ターゲット

  • Artillaryを使用した負荷テスト
  • 1. Node.jsダウンロード


  • 以前nodeをインストールしたことがあるのでスキップします.
  • をダウンロードしたい場合は、リンクからダウンロードできます.

  • カリキュラムは14.15.3版で、私は今12.18.3版です.
    後で問題が発生したら、バージョンをアップグレードします.
  • 2.Artillaryのインストール


  • https://artillery.io/docs/guides/getting-started/installing-artillery.html

  • 上のリンクにはインストール方法があります.また、使い方も良いので参考にしてください

  • vscodeで端末を開き、コマンドを入力します.
    npm install -g artillery
  • 3.Arilleryスクリプトの作成と実行



  • 新しいフォルダを作成し、vscodeを開いてcpu-testを行います.yamlファイルを作成します.

  • このファイルにスクリプトを作成します.
  • スクリプトがgithubにアップロードされました.
  • 3-1. スクリプトの説明


  • target:urlを1つ書いてインスタンスに接続すればいいです.http://t+インスタンス外部ip

  • duration:性能を測定する時間

  • ArrivalRate:1秒あたりの新規仮想ユーザー数
  • 3-2. スクリプトの実行

    artillery.cmd run --output report.json ./cpu-test.yaml

  • Cannot read property "config"of undefined

  • configが見つからないエラーが発生しました...node.jsバージョンのせいだと思います.
    削除後に再インストールしますが、同じ状況です.

  • 問題はフォルダがハングルで書かれていることです.開発学習の過程で、誰もが一度経験したことがあると思います.
    忘れてしまうと一度間違えてしまいます.
  • 3-3. htmlファイルを使用して結果をチェックする


  • 結果はjsonファイルとして表示されます.これをhtmlファイルを開く
    artillery.cmd report .\report.json


  • グラフィックの説明

  • 縦は遅延時間、横は時間を表します.

  • 最大:要求->最大応答時間

  • p 95:HTTPトランザクションの最速速度から95%(ほとんどのトラフィックがここに含まれている).

  • p 50:HTTPトランザクション全体において、最速から50%(トラフィックの半分はここに含まれる)まで.

  • min:最速リクエスト->レスポンス時間
  • このほか、p 99もよく使われています.実際にベンチを量るときもp 99,p 95のグラフをたくさん描きます.p 99はほとんどのトラフィックであるため、実際のアプリケーションのパフォーマンスに近い.

    4.圧力を上げる


    4-1. バーチャルプレイヤー1→4




  • Latencyは大幅に増加しましたが、すべてのリクエストが正常に処理されていることを確認できます.
  • 4-2. バーチャルプレイヤー4→8




  • 1155個の要求がタイムアウトされた.40秒ほど経つと最大遅延が急増します.
  • スケールでどれだけ削減できるかを見てみましょう

    5.規模拡大

  • の既存のインスタンスには、2つのcpuがあります.次に、8つのcpuのインスタンスを作成してテストします.
  • ソウルレンタルは限られており、既存のインスタンスを削除して再作成する必要があります.

  • マシンタイプで、8つのcpu、8 gbメモリを選択し、残りは以前と同じです.
    写真では見えませんが、下のhttp、httpトラフィックが許可されているかどうかをチェックする必要があります.

  • ssh接続後、wget、javaインストール後にアプリケーションをインポートして実行します.
    このプロセスは前の文章で、省略します.


  • も同様に60秒以内に8名の仮想プレイヤーに設定して行い、一時停止を要求せず、すべての処理を完了した.
  • 作成したばかりのインスタンスはコストがかかるため、削除する必要があります.

    6.実際の操作における性能テスト基準


    この方法は人によって違うので、自分の方法を制定しなければなりません.

  • 常に予想を下回るTPSを性能目標とする.
  • 予測されるTPSが1000程度であれば、トラフィックの急増に対応するために、少なくとも3000〜4000個のインスタンスを余裕を持って配置する必要がある.しかし、サーバーの料金も高い.

  • APIの要件を満たすまで、パフォーマンスをテストする必要があります.

  • まず、単一リクエストの遅延数を決定します.(砲兵シナリオに基づいて仮想ユーザ数を1に設定)

  • 個々の要求のLatencyが予想されるLatencyよりも高い場合、この問題は拡張によって解決できません.コード効率が低下したり、API上で実行されたりするI/Oがボトルネックになることが多い.

  • ネットワークでもLatencyが発生する場合があります.
  • これは私が性能テストをするのは初めてです.私の考えは、以前作成したサイドライトプロジェクトでは、文章をクエリーするときに複数のクエリーが発生し、パフォーマンスを最適化する過程でブロックによって放棄されたということです.
    もう一度試して、既存の最適化後の性能テストと比較すると、面白いはずです!
    圧力テストツールを選択する場合は、2つの適切な問題を選択します.
    1.圧力テストで収集した指標の中に、私が必要とする指標はありますか?
    2.テストスクリプトを使用して、私が望む方法で簡単にテストできますか?
    テストツールはnGrinder、Artillary、JMeterなどがあります.
    nGrinder氏によると、Javaベースでスクリプトを書くのは不便だという.