2011年11月にGAEのプレビューが終わり、早数ヶ月経ちました。
これからGAEでの開発に乗り出す企業様、個人の方との情報共有も兼ねまして、無料枠でどこまで
使えるのか気になったので、無料枠と課金の問題について調査したいと思います。
調査は大きく分けて3回行ないたいと思います。
- その1 Hello World
プログラミングをやっている方には定番中の定番ですね。
ここでは単純にHello worldと表示されるページに対してリクエストを3パターンに分けて実行します。 - その2 吉積情報株式会社のダミーHPのトップ画面
一般的な企業のホームページをGAE上で運用した場合、どれだけのアクセスに耐えられるのか、実際に弊社のダミーホームページを使って試してみましょう。 - その3 掲示板への書込と出力
最後に実践的なものの例として、掲示板への書込と書込結果の出力(最新10件)をGAE上でどれほどの負荷がかかるのか、調べてみたいと思います。
前述した通り、調査第1回目はHello world のページへのリクエストです。
ページのソースは、以下になります。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>helloworld</title>
</head>
<body>
Hello world
</body>
</html>
テストパターンは下記の3種類です。
使用したツール : jakarta-jmeter-2.5.1
パターン | 同時リクエスト数 | ループ数 | 総アクセス数 |
1 | 15 | 20000 | 300000 |
2 | 30 | 20000 | 600000 |
3 | 60 | 20000 | 1200000 |
リスエストの処理結果は、jmetaのログから3パターンの全リクエストはHTTPステータス200で処理が完了しました。
リソースの利用状況は、GAEの管理コンソールから確認できます。
管理コンソールの左メニュー「Billing」の「Billing History」をクリックしてください。
課金のあるなしに関わらず、一日ごとに記録が取られていますので、確認したい日付の「Usage Report」をクリックしてください。
「Usage Report」をクリックすると、その日の課金状況の詳細が確認できます。
縦の、「Resource」は、課金対象になっているリソースの項目です。各リソースの項目の下には、単位あたりにかかる金額が書いてあります。
横の、「Used」は使用したリソース量、「Free」は無料枠で使用できるリソース量、「Billable」は無料枠を超えて課金対象になったリソース量、
「Charge」は実際に請求される金額が表示されます。
詳細画面の説明はひとまずここまでにして、次はいよいよ負荷テストの結果についてです。
パターン1 「15スレッド/20000ループ」
- 全リクエスト完了時間 : 7時間33分50秒
- リクエスト完了結果 : 全リクエスト、ステータス200
Frontend Instance Hoursが8.69ですか。。。Frontend Instanceの立ち上がり時間はリスエスト時間に比例するはずですので、全リクエスト完了時間の
7時間33分50秒に対しては少し多い感じしますね。
パターン2「30スレッド/20000ループ」
- 全リクエスト完了時間 : 8時間4分6秒
- リクエスト完了結果 : 全リクエスト、ステータス200
今度はFrontend Instance Hoursが8.68。。。パターン1よりも多くのスレッドを立てて実行しましたが、使用したFrontend Instance Hoursはパターン1と同じくらいですね。キャッシュが効いてて、これ以上のFrontend Instanceは立ち上がらないのかもしれませんね。
しかし、Bandwidth Outも変わらないのはちょっと考えものかもしれません。。。スレッド数を倍にしたんですから、こちらは増えてもいいかなと思うのですが。。。
パターン3「60スレッド/20000ループ」
- 全リクエスト完了時間 : 7時間26分38秒
- リクエスト完了結果 : 全リクエスト、ステータス200
最後のパターン3ですが、Frontend Instance Hoursが8.37。。。一番少ないですね。。。全リクエスト完了時間も一番短いですね。
本来なら一番Frontend Instance Hoursと全リクエスト完了時間がかかるはずなんですが。。。
Bandwidth Outが0.07とパターン1、2よりも増えていて、これは予想通りでした。
今回のテストで最も注目して欲しい点は、Frontend Instance Hoursです。
これはリクエストに対して、インスタンスを生成するたびに増えていきます。
意外にもFrontend Instance Hoursには大きな差もなく、全リクエストがステータス200で終了しました。
現実ではhello worldだけなんていうことはないかと思いますが、今回の結果から15スレッドでも60スレッドでも変わりませんので、
十分無料枠でいけますね。
今回のテストですが、JMeterのログで全リクエスト数は確認したものの、スレッド数が倍違うパターン1とパターン2のBandwidth Outが
同じ0.04というのが気になります。。。
もしかしたら、失敗しているのかもしれません。。。
次回は、「吉積情報株式会社のダミーHPのトップ画面」について調べてみましょう。