Gatling を使った負荷テスト
先日Webサービスの負荷テストを行う際に、 Gatling というツールを使ったのでその概要をまとめておく。 ざっくり調べたことのまとめなので、間違い等あったら @__garsue__ に指摘してください。
負荷テストとシナリオ
そもそも僕は負荷テストというものが何かを知らなかった。 ググったところ JMeterを始め、いろいろな形式の負荷テストツールや負荷テストサービスがあるらしい。
いずれのツールもやることは基本的にHTTPリクエストを投げることなのだが、その内容や数など、シチュエーションに応じたリクエストを作らなければ負荷テストとして意味が無い。 そのシチュエーションを再現した一連のHTTPリクエストを「シナリオ」という。
負荷テストツールを選ぶ上で、どのようにシナリオを作るかという点が大きな選択基準となる、と思う。 その点に関して、今回触ったGatlingはなかなか秀逸だと感じた。
Gatlingの特徴
Gatlingの特徴はシナリオをScalaによる内部DSLで記述する点だ。 初見でもサンプルをそれなりに読み下せる。
JMeterのサンプルが比較対象として上げられているが、こんな長ったらしいXMLを見ると体調を崩すタイプの人間にはGatlingのDSLはかなりありがたい。
また、JMeter同様シナリオの自動生成もできる。やり方はJMeterと同様プロキシサーバを立ててそれ越しにWebサービスにアクセスし、HTTPのやりとりを記録する方法だ。 JMeterと比べた利点は生成されるシナリオを人が読める点だ。
生成されたシナリオは余計なリクエストや不要なヘッダを含んでいたりして、シナリオとしてそのまま使えるということはそう多くないと思う。 したがって、シナリオとして仕上げるためにはある程度編集が必要となる。
JMeterの場合はちまちまGUIから編集するか、場合によっては巨大なXMLをいじるはめになるのだろうが、Gatlingでは生成されるシナリオも比較的触りやすい形になっている [1] 。
シナリオを実行した結果のレポートもおしゃれで、大したこと無いテストでもなんだか一仕事した感を演出してくれる。 レスポンスタイムの最小・最大・平均だけでなく、標準偏差・P値まで出し、グラフによる可視化もこれでもかというぐらいやってくれる。
レポートに関しては他のツールがどんなものか分からないが、Gatlingのレポートで不足するシーンはめったにないだろう。
使用方法
公式ドキュメントに全て書いてあるので、そちらを読んでほしい。 https://github.com/excilys/gatling/wiki
英語だが、サンプルも多く使い方もシンプルなので、それほど難儀しないだろう。 Gatling 1とGatling 2があるが、2はまだ開発中とのこと。
不満
起動が遅い。JVMの起動とシナリオのコンパイルのせいか、起動からシナリオ実行まで結構もたつく。 シナリオ作成中にこまめに修正->実行をするのはそれほどスムーズではなかった。
最初は一からシナリオを手書きしていたが、あまりにももたもたしてストレスが溜まったので、結局Recoderで自動生成したものやや修正するだけにした。 そもそもそういった使い方を前提としているのかもしれない。
あとはcheckによるアサーションでリダイレクト先のURLの部分一致がほしいと思った。
脚注
[1] | なぜか文字列がヒアドキュメントの形式( """こんな感じ""" )にされるが。 |
飼育計画
概要
現状の飼育条件を考慮した上で飼育可能と思われる種としてヒョウモントカゲモドキをとりあげ、どの程度の費用と手間がかかるかを検討する。
飼育条件
- 世話ができない期間(最大1週間程度)があっても問題ない生物であること。
- 高温に強いこと。
- 極端に好みが分かれる容姿の生物(例えばヘビ、カエル、ゴキブリ、ヤスデ)でないこと。
候補となる生物
ヒョウモントカゲモドキ
ペットとして定番の爬虫類である。 飼いやすい性質を持っている。 必要な設備も小規模で済む。 絶食にも強い。
定番だけあって情報も多い。 寿命は10年以上らしい。 餌はイエコオロギやミルワームなどの昆虫食である。 生き餌以外にも餌付くが慣れないうちは生き餌が必要となる。
ビジュアル的にもカラフルで愛嬌のある顔をしており、比較的親しみやすいと思われる。
タランチュラ (オオツチグモ)
近年では飼育法も確立し、初心者でも十分な調査をすれば飼育できると思われる。 丈夫な種が多く、長期間の絶食にも耐える。 種によるが、生体そのものの価格はやや高めである。
飼育が軌道に乗れば10年以上は生きるらしい。 ただし、幼体や若い個体は飼育開始から間もなく死亡することがあるらしい。 餌は種や個体の大きさにもよるが、基本的に昆虫・ピンクマウス等で良い。
一般的に毒グモのイメージが強いが、毒自体はそこまで強いものではない。 ただし、噛まれれば腫れることもある。 また、毒以前に顎自体が強力であるため、噛まれるだけで怪我をする。
もう一つ注意すべき点は体表を覆う刺激毛である。 刺激毛が目や皮膚についた場合は炎症を起こす場合がある。
やはりクモであるため、苦手な人には受け入れがたい生物かもしれない。
その他
基本的に毎日世話が必要な哺乳類・鳥類は避ける。 一般に高温に弱いと思われる水棲生物は避けたほうがよい。 地上性の両生類(ツノガエル、サラマンダーなど)も高温には弱いため避けたほうが無難だろう。
タランチュラと同時に語られる事が多いサソリは検討に値するが、毒性はタランチュラよりも強く、乾燥・水切れに弱いらしい。
結論
もっとも条件に合っている生物はやはりヒョウモントカゲモドキだろう。 以下ではヒョウモントカゲモドキを飼育する前提で必要となる設備・費用・手間などを検討していく。
初期費用
生体 | 10,000 |
飼育ケース | 6,000 |
保温器具 | 3,500 |
サプリメント | 3,000 |
温湿度計 | 1,000 |
ピンセット | 1,000 |
シェルター | 600 |
雑費 | 300 |
合計 | 25,400 |
セットアップ
生体
極端に安い生体は避ける。 通販よりも実物を見て、健康状態と餌付きを確認して購入することが望ましい。 アルビノ個体は通常個体よりも視力が弱いため避ける。
飼育ケース
今あるものが使えるか検討する。 既存のものを利用する場合でも蓋を購入する必要がある。
保温器具
遠赤外線パネルヒーターを利用する。 飼育ケース全面を温めるわけではないので、ケース底面の1/2ないし1/3程度をカバーできるものを選ぶ。
シェルター
流木等の天然のものや、セラミック製のものなどがある。 掃除のしやすいものを選ぶ。
その他必要なもの
- 水苔設置用容器(タッパーなど)
- 水入れ、サプリメント入れ
ランニングコスト
遠赤外線パネルヒーターの消費電力は6~10Wであり、家庭用ルータ1台分程度である。 夏場はつける必要はないが、冷房を入れる場合はつけるべきかもしれない。
餌代は仮に1日平均で6匹のイエコオロギを食べ、イエコオロギ一匹あたり8円だった場合、1,440になる。
日常的な世話
毎日やる世話
- 給餌(幼体・若い個体の場合)
- 排泄物を取り除く。
- 飲水の交換
週に3,4度やる世話
- 給餌(成体の場合)
週に1度やる世話
- 床材(キッチンペーパー)を取り替える。
餌
生き餌
ヨーロッパイエコオロギかミルワームが定番である。 その他にはハニーワーム、ピンクマウス、デュビアがよく利用されている。 栄養を増加・調整するために餌にも栄養のあるものを食べさせ、餌にする直前にサプリメントをまぶす。
餌の飼育は容易で、繁殖に成功すれば安価に安定した餌が得られる。 ただしイエコオロギは素早いため脱走に注意する。
生き餌以外
大半が冷凍であるため、冷凍庫が必要となる。 与える際は十分に湯につけて温める。
人工飼料もあるが、餌付くかどうかは個体により、補助的な利用に留めておくべきという情報もある。