負荷テスト、みなさんは実施されたことはあるでしょうか。 鎌田です。
負荷テスト、なんとなく耳にしたことがあっても、何のためのものなのか、ご存知ない方もいらっしゃるかと思います。 このブログ記事では、負荷テストに関しての計画から、AWSで負荷テストを実施する場合の注意点などを、連載形式で書いていきたいと思います。
まず初回ということで、「負荷テストの計画」について触れたいと思います。
負荷テストとは
そもそも負荷テストとは、どんな目的で実施するのでしょうか。 基本は、構成されたシステムが、実際の業務などで処理する業務量を予定された性能で処理できるかを確認するために実施されます。 アプリケーションの通常のテストでは、数百人で同時にアクセスする、といったことは出来ないため、負荷テストで擬似的に同時に大量アクセスを実施し、 アプリケーション・サーバーインフラが共に問題なく利用できるか確認をします。
また見込んでいる数値以上のアクセスを実施した場合に、サーバーのCPU利用率が100%のままになったり、 アプリケーションのレスポンスが極端に落ちたりと、負荷を段階的に上げることにより、システムの限界値やボトルネックを把握することができます。
計画のポイント1~負荷の数値~
負荷テストを実施する際は、急に高い負荷を掛けるのではなく、少しずつ数値を上げていって、レスポンスやシステムリソースの使用状況などを確認し、変化が記録できるようにしましょう。 たとえば、同時200人のアクセスでの性能を確認したい場合は、以下のような形で数値を上げていくと良いのではないでしょうか。
- 同時10
- 同時50
- 同時100
- 同時150
- 同時200
- 同時250
また計画段階では見込んでいる最大値までだけではなく、それよりも大きい数値まで負荷を掛けることを計画しましょう。
計画のポイント2~取得するメトリクス~
計画段階で、取得するメトリクスと、メトリクスがどの範囲内であれば問題なしと判断するのか、決めておきましょう。 インフラ観点の、CPU使用率やディスクIO、ネットワーク使用量ももちろんのこと、アプリケーション観点の、レスポンスタイムなども決めておきます。 これによって、何をもって「このシステムは負荷に耐えられる」と言えるかを明確化もできます。
計画のポイント3~負荷テストのシナリオを考える~
一番の重要ポイントはこれです。様々な考え方がありますが、基本は下記のどちらかではないでしょうか。
- 業務の一連の流れを一定ユーザー数で実施する
- 開発段階などから処理が重いと分かっている部分にフォーカスして負荷をかける
時間が許す限り、両方を実施するようにし、インフラ・アプリケーションの両面の問題点がないか、しっかりと確認しておきましょう
まとめ
1.負荷テストを実施する際は、計画からきちんと考える 2.負荷をどのぐらいかけるか、取得するメトリクスは何にするか、どのようなシナリオとするかを考え、アウトプットする 3.アプリケーション・インフラの両方の面で問題がないかを確認できるように計画する
負荷を掛ける計画が出来たら、負荷を掛ける準備に入りましょう。 次回は、負荷を掛けるためのシナリオ作成について触れたいと思います。