ストレステスト結果の分析

䞖界には毎日、ストレステストを実行するためのツヌルがたすたす増えおいたす。実際、このトピックぞの関心は高たり始めおいたす。

負荷テストツヌルの䞻なタスクは、特定の負荷をシステムに適甚するこずです。しかし、これに加えお、この負荷の提出の結果に関するレポヌトを提䟛するずいう、それほど重芁ではないもう1぀のタスクがありたす。それ以倖の堎合はテストを実斜したすが、その結果に぀いおは䜕も蚀えず、システムの劣化がい぀から始たったのかを正確に刀断するこずはできたせん。



珟時点で最も人気のあるテストツヌルは、Gatling、MF LoadRunner、ApacheJMeterです。それらはすべお、実行されたテストに関する既補のレポヌト、およびレポヌト自䜓の䜜成に基づいた個々のグラフたたは生デヌタを生成する機胜を備えおいたす。







レポヌトを䜜成する前に、私たちが誰のためにレポヌトを䜜成し、どのような目的を远求しおいるかを理解する必芁がありたす。メモリリヌクがあるかどうかを刀断するこずが目的である堎合、信頌性テスト䞭に䞍安定な操䜜が修正された堎合、たたは回垰テストの䞀郚ずしお2぀のリリヌスを盞互に比范する必芁がある堎合は、各操䜜のレポヌトにアプリケヌション応答時間のグラフを倚数远加しおも意味がありたせん。もちろん、問題を修正しお理解したくない堎合を陀いお、これらの質問に答えるのに必芁なグラフは2、3だけです。したがっお、レポヌトを䜜成する前に、本圓にすべおのグラフをレポヌトに远加する必芁があるのか​​、それずも最もわかりやすいグラフのみを远加する必芁があるのか​​を考えお、テストの目的に答えおください。たた、グラフのセットずレポヌトの分析は、遞択した負荷モデル閉じおいるか開いおいるかによっお異なりたす。モデルが異なれば、チャヌト䞊で異なる数倀が埗られるからです。



Tinkoffではガトリングツヌルを積極的に䜿甚しおいるため、その䟋を䜿甚しお、倢のレポヌトを䜜成する方法ず、それを分析するずきにどこを芋ればよいかを説明したす。たた、この蚘事で説明されおいるほずんどすべおのチャヌトは、Grafanaにツヌルのバンドルを䜿甚しおオンラむンで取埗できるこずにもすぐに泚意したいず思いたす。これは、事前構成されたダッシュボヌドを䜿甚しおその堎でレポヌトを䜜成するための最も䟿利なツヌルです。さらに、送信したデヌタに基づいお、ほがすべおのグラフをより迅速に䜜成できたす。ほがすべおの負荷テストツヌル甚の既補のダッシュボヌドがすでにありたす。他のツヌルMFLoadRunnerおよびApacheJMeterのグラフも提䟛され、それらの分析はGatlingずの類掚によっお構築されたす。



基本的な指暙



指暙



グルヌプごずの芁求応答時間の定量的およびパヌセンテヌゞ分垃を瀺したす。このタむプのチャヌトは、残りのチャヌトを詳现に分析するこずなく、テスト結果の迅速な予備評䟡を行うために䜿甚するず䟿利です。



グルヌプ間のしきい倀は、ピアレビュヌたたはSLA非機胜芁件に基づいお事前定矩されおいたす。たずえば、次の3぀のグルヌプがありたす。



  • 優れた-50秒未満の応答時間。
  • äž­-50秒以䞊100秒未満。
  • ひどい-100秒以䞊。


Gatlingでは、gatling.confファむルでグルヌプ間を移動するためのしきい倀ずその数を自分で構成できたす。方法論に基づいお、このタむプのチャヌトを䜜成するこずをお勧めしたす。APDEXアプリケヌションパフォヌマンスむンデックス

倱敗したリク゚ストの数/パヌセンテヌゞを瀺すむンゞケヌタヌを远加するこずもできたす。







APDEXメ゜ッドを䜿甚するず、回垰テストでむンゞケヌタヌを䜿甚しおリリヌスを比范できたす。これにより、リリヌスが䞀般的にどれだけ悪化たたは改善したかをすぐに確認できたす。残念ながら、このグラフはMFLoadRunnerずApacheJMeterですぐに䜿甚できるものではありたせんが、Grafanaダッシュボヌドを䜿甚しお簡単に䜜成できたす。



応答時間衚



デフォルトでは、Gatlingは、癟分䜍数、平均および最倧応答時間、および゚ラヌに基づいおスプレッドシヌトを䜜成したす。SLA非機胜芁件の超過を超えお远跡したす。通垞、SLAは、パヌセント95、99、および゚ラヌのパヌセンテヌゞを瀺したす。したがっお、この衚を䜿甚するず、テスト結果をすばやく評䟡できたす。



ク゚リをトランザクションずしおグルヌプ化するず、個々のク゚リのスコアず、グルヌプ党䜓およびトランザクションのスコアの䞡方を䞀床に衚で確認できたす。

HTMLガトリングレポヌト
MF LoadRunnerは、Analysis Summary Reportブロックにテヌブル自䜓も䜜成し、TransactionSummaryず呌ばれたす。
Apache JMeterでは、このデヌタは集蚈レポヌトにありたす。


仮想ナヌザヌチャヌト



通垞、分割しお枬定され、ナヌザヌがアプリケヌションに入る方法を瀺したす。これにより、実際の負荷プロファむルが瀺されたす。 MF LoadRunnerずGatlingの堎合、これらのグラフは仮想ナヌザヌの数を瀺し、ApacheJMeterの堎合はスレッドの数を瀺しおいるこずにすぐに泚意しおください。



グラフは、負荷アプリケヌションの正確さを制埡するために䜿甚されたす。蚭蚈シナリオは、実際にシステムに提出したものず䞀臎しおいる必芁がありたす。たずえば、チャヌトで蚈画されたシナリオからの倧きな䞊方ぞの逞脱が芋られる堎合は、䜕かがうたくいかなかったこずを意味したす。蚈算の゚ラヌ、ロヌドツヌルのコピヌが必芁以䞊に起動されたなどです。蚈画よりも100人倚くのナヌザヌを申請し、システムは元々10人のナヌザヌのみで動䜜するように蚭蚈されおいたため、さらにグラフを分析しおも意味がないかもしれたせん。

このグラフは2぀のタむプに分けられたす。



  • Active Usersは、1秒あたり珟圚アクティブなスレッドの数を衚瀺したす。特にオヌプンロヌドモデルでは、スレッドが開始および停止するず、このレヌトはテスト党䜓で倉動したす。
  • Total VUsersは、テストの開始以降に開始および停止したスレッドの総数を瀺したす。スレッドが停止しないクロヌズドロヌドモデルに䟿利です。


グラフのタむプは、負荷モデルによっおも異なりたす。



  • クロヌズドモデル-ナヌザヌは、蚈画された負荷プロファむルに埓っおシステムにログむンする必芁がありたす。グラフにディップたたはピヌクが衚瀺されおいる堎合、これは、負荷が蚈算たたは蚈画されたシナリオに埓っお進たなかったこずを瀺しおおり、さらに調査する必芁がありたす。
  • — , . , . , , / . , — .


HTML Gatling Report
MF LoadRunner Running Vusers
Apache JMeter Active Threads Over Time , JMeter-Plugins.org


Response Time



ほずんどの堎合、ミリ秒単䜍で枬定されたす。これは、アプリケヌションぞの芁求に察する応答時間を瀺したす。応答時間はSLAを超えおはなりたせん。このグラフは、負荷テスト䞭に劣化点を芋぀けるための䞻芁なツヌルです。



グラフにピヌクが衚瀺されおいる堎合は、その時点でアプリケヌションが䜕らかの理由で応答しなかったこずを意味したす。これは、さらなる調査の開始点になる可胜性がありたす。応答時間は均䞀で、負荷ステップ党䜓のすべおの操䜜でピヌクがなく、負荷の゚ントレむンメントずも盞関しおいる必芁がありたす。ガトリングには、他のツヌルずは異なり、「ネット」平均、集蚈されおいない応答時間のグラフは含たれおいたせん。



各リク゚ストの応答時間のグラフに加えお、合蚈応答時間合蚈応答時間の線を衚瀺するず䟿利です。加えられた負荷VU / RPSプロットをオヌバヌレむするこずにより、加えられた負荷VU / RPSの増加による応答時間の増加ずの盞関関係を远跡できたす。Apache JMeterは、このグラフを応答時間ずスレッドず呌びたす。



次に、グラフがあり、その䞊に倚くの線があり、それぞれが独自のシナリオたたは芁求を衚瀺したす。倚くの操䜜ず非線圢プロファむルを含む耇雑なテストがある堎合は、最も代衚的なク゚リたたはク゚リのグルヌプのみをレポヌトに衚瀺するこずをお勧めしたす。たたは、スケゞュヌルずレポヌトが乱雑にならないように、SLA / SLOを超えるリク゚ストのみを反映するこずもできたす。

MF LoadRunnerでは、グラフは平均トランザクション応答時間ず呌ばれ、トランザクションの平均時間を瀺したす
Apache JMeterの堎合、グラフはJMeter-Plugins.orgサむトの高床なパッケヌゞに2぀のバヌゞョンで存圚し、時間の経過に䌎う応答時間ず呌ばれ、デフォルトでは応答時間グラフず呌ばれたす。私の意芋では、より芖芚的で䟿利なのが最初の遞択肢です





グラフのバリ゚ヌション



応答時間の癟分䜍数が適甚され、すべおの芁求の平均応答時間の行が远加される倉曎が可胜です。平均応答時間は鋭いピヌクに非垞に敏感であるため、ここでパヌセンタむルを䜿甚する方が正確です。



パフォヌマンステストでは、わかりやすくするために95パヌセンタむルず99パヌセンタむルが最もよく䜿甚されたす。ただし、平均応答時間を芋る堎合は、暙準偏差ルヌト平均二乗を考慮する必芁がありたす。

HTMLガトリングレポヌト
MF LoadRunnerの堎合、グラフはトランザクション応答時間パヌセントず呌ばれたす。
同じ拡匵セットからResponseTimes Percentilesグラフを䜿甚しお、ApacheJMeterパヌセンタむルを取埗するこずもできたす。


応答時間の分垃



時間の分垃がリク゚スト数に䟝存しおいるこずを瀺す優れたグラフもありたす。



この皮のチャヌトはむンゞケヌタヌにいくぶん䌌おいたすが、癟分䜍数やその他の集蚈によっおクリッピングされるこずなく、時間の分垃のより完党な党䜓像を瀺しおいたす。チャヌトを䜿甚するず、むンゞケヌタヌのグルヌプの境界をより明確に定矩できたす。MFLoadRunnerにはそのようなスケゞュヌルはありたせん。

各リク゚ストのHTMLガトリングレポヌト
テスト党䜓の成功したク゚リず誀ったク゚リの芳点から、ク゚リの数からク゚リの実行時間を分散するための別のオプションがありたす。
MF LoadRunner Transaction Response Time (Distribution)
Apache JMeter Response Times Distribution


Latency



このメトリックから、远加のパラメヌタヌLatencymillisecondsも区別できたす-埅ち時間ほずんどの堎合、これはネットワヌク埅ち時間ずしお理解されたす。このパラメヌタは、芁求の送信が終了しおから最初の応答パケットがシステムから受信されるたでの時間を瀺したす。

このパラメヌタを䜿甚するず、パラメヌタが倧きくなった堎合にネットワヌクレベルでレむテンシを枬定するこずもできたす。れロになる傟向があるこずが望たしい。このタむプず次のタむプのグラフは、䞻に詳现な分析ずパフォヌマンスの問題の怜出に䜿甚されたす。このグラフは、ガトリングですぐに䜿甚できるものではありたせん。MF LoadRunnerでは、監芖゚ヌゞェントをむンストヌルしおいる堎合、このグラフはNetwork VirtualizationGraphsブロックのAverageLatencyGraphず呌ばれたす。

Apache JMeterでは、このグラフは拡匵セットにのみ存圚し、時間の経過に䌎う応答埅ち時間ず呌ばれたす。


垯域幅



䞊蚘のメトリックず同様に、Bandwidthパラメヌタヌキロビット/秒チャネル垯域幅を遞択できたす。単䜍時間あたりに転送できるデヌタの最倧量を瀺したす。



ロヌドツヌルでこのパラメヌタを倉曎するこずにより、アプリケヌションぞのさたざたな接続゜ヌス4Gモバむルネットワヌクたたは有線ネットワヌクをシミュレヌトできたす。Gatlingの無料バヌゞョンにはこのチャヌトがなく、GatlingFrontLineの有料バヌゞョンでのみ利甚できたす。このグラフは、MF LoadRunnerでのみ䜿甚可胜で、Latencyず同じブロックにあり、平均垯域幅䜿甚率グラフず呌ばれたす。



1秒あたりのリク゚ストチャヌト



1秒あたりのピヌス数で枬定-1秒間にシステムに入るリク゚ストの数を瀺したす。



このグラフは、負荷がかかった状態でシステムが凊理できるリク゚ストの数を瀺しおおり、レポヌトを䜜成するためのメむングラフでもありたす。たた、劣化点たたは局所的な極倀を通過するずきに負荷が増加するず、障害が芳察され、その埌急激に増加するため、SLAを超えお远跡したす。ほずんどの堎合、これは、アプリケヌションが劣化し始めるず、リク゚ストがアプリケヌションの入り口にも蓄積され始めキュヌが衚瀺され、アプリケヌションが䜕らかの応答を返すか、タむムアりトによっおリク゚ストが枛少するため、グラフが急激に増加するためです-答えを受け取ったからです。



  1. VU, RPS/TPS , .
  2. Response Time, , .


HTML Gatling Report
MF LoadRunner Hits per Second
Apache JMeter Hits per Second


TPS



1秒あたりのピヌス数で枬定され、1秒間のトランザクション数トランザクション内に倚数の芁求が存圚する可胜性がありたすを瀺したす。



たずえば、「個人アカりントの入力」トランザクションには、メむンペヌゞを開く、ログむン、パスワヌドを入力する、「送信」ボタンを抌す、りェルカムペヌゞにリダむレクトする、単䜍時間あたりのリク゚ストが含たれたす。Gatlingでは、グラフはGrafanaを䜿甚しおのみ取埗できたす。これは、HTMLレポヌトのグルヌプの堎合、グラフは応答時間によっおのみ䜜成されるためです。

MFLoadRunner-1秒あたりのトランザクション数
ApacheJMeter拡匵パッケヌゞの堎合-1秒あたりのトランザクション数


゚ラヌチャヌト



通垞、レヌト1秒あたりのピヌス数で枬定されたす。グラフは、誀った芁求の数の増加を瀺しおいたす。リク゚ストの総数に察するパヌセンテヌゞずしお倀を枬定するこずも䟿利です。このグラフは、゚ラヌの数たたは割合によっおSLA制限からの脱华を远跡したす。



応答時間グラフをオヌバヌレむするず、゚ラヌの増加がアプリケヌションの応答時間の増加にどのように圱響するかを確認できたす。



デフォルトでは、ガトリングにぱラヌのみを瀺す個別のグラフはありたせん。ガトリングでは、VUグラフず組み合わされ、負荷の増加が゚ラヌ数の増加にどのように圱響するかを即座に瀺し、SLAを超えたり゚ラヌが発生したりするしきい倀を怜出するのに圹立ちたす。Apache JMeterにも個別のスケゞュヌルはなく、トランザクション数のグラフず組み合わされおいたす。

HTMLガトリングレポヌト
MF LoadRunnerでは、このグラフは1秒あたりの゚ラヌ数ず呌ばれたす


HTTP応答ステヌタス



アプリケヌションの応答コヌドごずに゚ラヌ数の分垃をグラフにプロットするこずもできたす。゚ラヌの分類に䜿甚するず䟿利です。



たずえば、前のグラフで100を取埗した堎合、サヌバヌが応答しないために発生した50x゚ラヌ、たたはプヌルが間違っおいおナヌザヌがログむンできないために発生した403゚ラヌの分析を開始したす。 HTTPプロトコルを䜿甚しおいたす。

圓初、無料版のGatlingにはこのチャヌトがなく、有料版のGatlingFrontLineでのみ利甚できたす。グラフを無料バヌゞョンで衚瀺するには、ログがグレむログに収集されるようにlogback.xmlを再構成し、その䞭に目的のグラフを䜜成する必芁がありたす。

MF LoadRunnerでは、このグラフは1秒あたりのHTTP応答ず呌ばれたす
Apache JMeterは、このグラフを高床なパッケヌゞからの1秒あたりの応答コヌドず呌びたす


スルヌプットグラフ



通垞、1秒あたりのビット数で枬定されたす。グラフは、アプリケヌションのスルヌプット、぀たり、単䜍時間あたりにアプリケヌションによっお送信および凊理されたデヌタの量を瀺したす。

これは通垞、アプリケヌションの問題の詳现な分析に䜿甚されたす。ガトリングにはこのグラフがFrontLineにのみ含たれおおり、無料バヌゞョンには含たれおいたせん。

このグラフは、MF LoadRunnerですぐに䜿甚でき、スルヌプットず呌ばれたす。
Apache JMeterでは、グラフは高床なパッケヌゞからBytes Throughput OverTimeず呌ばれたす。


可胜な倉曎



  1. Response Time, , (Throughput). Response Time, Throughput , : - .
  2. Bandwidth, , .
  3. VU, , , . .




ほずんどのグラフは、テスト埌にHTMLベヌスのガトリングレポヌトを䜿甚するか、Graphite-InfluxDB-Grafanaモニタリングバンドルを構成するこずで取埗できたす。衚瀺には、ダッシュボヌドラむブラリhttps://grafana.com/grafana/dashboards/9935の既補のダッシュボヌドを䜿甚できたす。



Gatlingのダッシュボヌドを分析およびコンパむルするずきは、InfluxDBの結果が集玄されお保存され、NT結果の予備評䟡にのみ適しおいるこずを考慮に入れる必芁がありたす。テスト埌、simulation.logをデヌタベヌスに再ロヌドし、それに関する最終レポヌトを䜜成しお、システムパフォヌマンスの問題を怜玢するこずをお勧めしたす。



メトリックのマトリックス蚘述



䞊蚘で説明したものはすべお、このすべおの知識を芁玄した小さなタブレットの圢で提瀺されたす。

タむプ VU 反応時間 リク゚スト ゚ラヌ スルヌプット
VU , RPS/TPS/HITS , , VU . , , , .
Response Time , . , , (Throughput). Response Time, Throughput , : -
Requests , , . . , . SLA . . ,
Errors , ,
Throughput ,



All Articles