初心者エンジニアの歩み[パフォーマンステスト1]

  • このエントリーをはてなブックマークに追加

現場でパフォーマンステストをしたので、理解したこと・あやふやなこと含めて、記録として書きます。

あくまで「初心者」が行った一連のテストですので、理解不十分な点や、無駄が多い点もあるかと思います。

パフォーマンステストってなに?


パフォーマンステストとは、負荷テストの中でも「対象システムが、何人までのユーザーの同時アクセスを処理することが可能か、又は何人以上になってくると処理不能(サーバーエラー)が発生するか」といったことをテストし、品質を保証します。

使用ツール・環境


  • EC2(本番webサーバー・バッチサーバー)
  • cloudwatch(webサーバー・バッチサーバーの負荷状況をいろんなグラフにしてくれます。)
  • Apache JMeter(負荷を与えるためのツール)
  • Excel(私は今回、cloudwatchだけでは不十分なグラフデータを取得するためにエクセルで作りました)
  • Rlogin(サーバー接続はすべてこれで)
  • WinSCP(JMeterを本番環境のサーバー上で、コマンドラインで動かすとなると、ファイルの移動等が非常に面倒になるので、SCPを使うと早いです)
  • windows 10(ローカル)→ virtual Box → centOS(開発環境)

このテストの短所


正解・不正解といった答えが曖昧ではっきりしません。JMeterの結果から、データが間違っていたり、シナリオが間違っていたりと、ある程度の見極めはできますが、最終的にはエラーが綺麗になくなるということはなく(何人まで耐えられるかというテストなので当然ですが・・・)、何度も流してみて、「データを取る限り、この辺りがシステムの限界だろう」といった見極め方になります。

私の場合はこのような流れで行いました>>>>

当初5000人テストを保証したかったけれど、最初は1000人の段階でエラーが続出しました。
(すべて結果データをとります。)

データの修正などを行って、2000人まではエラー数が0になりましたが、2500人にすると、エラーが続出
(最初のエラーはテストユーザーのデータに誤りがあったりしたので、JMeterのログをcsvにしてExcelで読み込み、
抽出機能を使うことでユーザーの誤りは修正できました。)

サーバーのメモリやCPUが足りてないのでそれらを増やしました
(EC2の方だけでは容量を増やすのにお金がかかるためだと思いますが、途中でGCPも使い始めました)

エラー数はだいぶ抑えられましたが、エラー人数が100~500人規模で出ます(これで次の人数に進めるのか・・・!?)
(今度はJMeterの方が処理が追い付いてなさそう)

JMeterサーバーを2台にしました
(JMeterサーバーの接続について次項で説明します)

負荷が分散されて落ち着きました(エラーはこの時点で10人程)

3500人でまた1000人規模のエラー
(DBサーバーのCPU処理が追い付かなくなりました)

・・・・・・・・・・・

結論から言うと、データベースサーバーを2台に増やし、ロードバランサーを用いることで5000人まで保証できるようになったのですが、そちらは縮退構成テストの環境として予定していたため、縮退構成でないテストはパフォーマンスとして3000人を保証することで一度キリを付けました。

縮退構成テストとは、webサーバーやDBサーバーが1台動かなくなった時のパフォーマンスをテストして1台動かなくなっても何人までなら動くよ!ということを保証します。最後は4000人、5000人での通常テストも行って、結局、5000人だと100人位は時折、500や502等のサーバーエラー画面に遭遇する、という結果で終了。

・・・・とこのような感じで、結果とエラーの種類、サーバーの状況を比較しながら進めていくのがパフォーマンステストでした。取り留めのない感想ですが、”答えがあるようで無く、無い様である”といった感じでした。

実際に行ってみて、躓いた点について


JMeterの使い方自体は様々なサイトや記事で紹介されているため、あまり躓きませんでしたが、一番理解が必要なのはその先のサーバー周辺についてでした。サーバーについてはほぼ知識のない状態だったので、仕事で指示された「バッチサーバー上でJMeterサーバーを動かして、そこからウェブサーバーにつなげて」という一文が、何度聞いても解読不可能「????」でした。なので、次の記事では、JMeterサーバーを中心に上記の一文を説明したいと思います。

  • このエントリーをはてなブックマークに追加

フリーランスで高収入と安心を実現するなら

テックブレインは、高単価・保障に強いIT/Webフリーランスエンジニアのための独立支援サービスです。

常時5,000件以上の高単価案件が豊富にあるため収入を最大化できます。また、あなたの立場になって案件の紹介から企業との交渉をシステム開発経験があるコーディネーターがフルサポート。正社員並みの福利厚生も利用できます。


高単価・正社員並み保障のフリーエンジニア求人案件へ