• Like
  • Save
JenkinsとjMeterで負荷テストの自動化
Upcoming SlideShare
Loading in...5
×
 

JenkinsとjMeterで負荷テストの自動化

on

  • 5,504 views

RejectTokyoRubyKaigi10で発表してきました

RejectTokyoRubyKaigi10で発表してきました

Statistics

Views

Total Views
5,504
Views on SlideShare
5,369
Embed Views
135

Actions

Likes
12
Downloads
15
Comments
0

2 Embeds 135

http://www.oreradio.com 133
https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    JenkinsとjMeterで負荷テストの自動化 JenkinsとjMeterで負荷テストの自動化 Presentation Transcript

    • Jenkins JMeterで 負荷テスト自動化 @oreradio12年12月8日土曜日
    • アジェンダ • 前提条件 • JenkinsにJMeter載せて負荷テスト • システム構成 • JMeter  ←Java • Chefを使ったサーバセットアップ   ←Ruby • Jenkinsプラグイン作った  ←Java • Jenkinsプラグイン作った その2  ←Java • Jenkinsプラグインの作り方  ←Java12年12月8日土曜日
    • 前提条件 • 基本となるパッケージがあって、各プロジェクトでカスタマイズが入るような開発 • 基本パッケージ開発段階でとんでもSQLを発行するコードが紛れ込む • Webサービス等だとアプローチが異なると思います 顧客n万件で 負荷を全く考慮しないSQLの混入 検索が死亡 例:多段サブクエリ 案件1 カスタマイズ 基本パッケージ 案件2 カスタマイズ12年12月8日土曜日
    • JenkinsにJMeter載せて負荷テスト • 開発初期段階で実際の環境に近い環境で負荷テストを行うのが望ましい • 毎回手動で実行するのは面倒なのでJenkinsに載せた • O ReillyのJenkins本にも「JMeterを使った自動パフォーマンステスト」の項目が ある O Reilly「Jenkins」6.8 JMeter を使った自動パフォーマンステスト パフォーマンステスティングは、一度きりでの非定型的な処理とされ、プロ ジェクトの最後や、何か問題が生じ始めたときにだけ行われるということが よくあります。とはいえ、パフォーマンスの問題は、他の種類のバグと同じ ようなものです。開発プロセスの後の方で検出されるほど、修正にコストが かかることになります。したがって、こういったパフォーマンス及び負荷テ ストを自動化し、あらゆる種類のパフォーマンスの低下を、世に出てしまう 前に検出できるようにすることは、非常に理にかなっているのです。12年12月8日土曜日
    • システム構成 対象サーバ HTTP Request HTTP Response Cookbook12年12月8日土曜日
    • JMeter ・テストシナリオを作成してそれを元にHTTP Requestを対象サーバに送信 ・Apache Benchは管理画面等の認証を突破できないのでJMeterにした ・Master/Slave構成取れるのでスケールする ・テストシナリオ作成  JMeterをproxyとして動作させてブラウザ操作を記録することが可能  →余計な画像等も拾ってしまいフィルタリングが面倒なので   WindowsのBadboyというアプリでシナリオ作成している12年12月8日土曜日
    • Chef サーバセットアップ自動化ツール PuppetやPython界隈で使われるFabricと同じようなもの Chefは内部DSLとしてRubyを使用する テンプレートはerb 個人的にはFabricは自由すぎる(普通にPythonスクリプト)と思う。 スクリプト毎に構成が違いすぎるのでCookbookという単位で縛れるChefの方が好き。 Github上で公開されているopscode-cookbooks cookbooks をベースにアプリ部分のcookbookを足した apache2 openssl mysql myapp12年12月8日土曜日
    • Chef/knife-ec2 ・ChefからAWS(Amazon Web Service)のEC2インスタンスの制御ができる ・ELB(Elastic Load Balancing)の制御はできない  →AmazonのELB向けAPI直接叩く ・knife-ec2使うとRubyやChef Clientのインストールをインスタンス立ち上げ時に  面倒見てくれる gem install knife-ec212年12月8日土曜日
    • Jenkinsプラグイン作った Performance Analysis Plugin for Jenkins JMeterで送信したリクエストのレスポンスについては既存のPerformance Pluginというやつで見る ことができるが、Apacheの数値だけではなくMySQLの状態についても見たい Slow Query LogのサマリーをJenkins上で見られるようにした MySQLの便利ツール集「Percona-Toolkit」に用意されているpt-query-digest --explainコマンドで 得られる テキストベースのサマリー結果をパース&整形してJenkins上で表示する ソースは公開してますが、公式プラグインではない12年12月8日土曜日
    • Jenkinsプラグイン作った その2 Cloud Management Plugin for Jenkins AWSのEC2インスタンス立ち上げをJenkins上から行える 既存のプラグインにも類似のものはあるが、こちらは任意の構成で任意の数のインスタンスを 立ち上げられるようにしている →EC2使わないことになったので開発休止中。  年末頑張れたら頑張る12年12月8日土曜日
    • Jenkinsプラグインの作り方 mvn hpi:create #雛形作成 mvn package #パッケージ作成 mvn hpi:run #デバッグ Jenkinsで用意されている拡張ポイントを継承して書いていく Builder←プロジェクト管理画面の「ビルド」のプルダウンに出る Publisher←プロジェクト管理画面の「ビルド後の処理」のプルダウンに出る Aaction←レポート画面等 迷ったらJenkins CIのGithubにある既存のプラグインのコード覗く https://github.com/jenkinsci12年12月8日土曜日
    • JRubyでもJenkinsプラグインが書ける • JavaでJenkinsプラグイン書く場合、Jellyテンプレートの書式が結構めんどい • ifはあってもelseがない • プルダウンメニューのデフォルト選択が上手くいかないetc • テンプレートがerbっていうだけでだいぶ楽。 • さっきJenkins本書いた方がいらっしゃったような...12年12月8日土曜日
    • END12年12月8日土曜日