wiki全体の目次



最近の更新 (Recent Changes)

2016-03-03
2016-01-05
2014-01-11
2012-11-28
2012-05-01
2011-12-24

最新リリース情報

charactorbot (v1.07.000)2014-01-11 18:05

Wikiガイド(Guide)

サイドバー (Side Bar)


FrontPage(wikiのトップページ)の表示

このwikiはSourceForge.JP、mixi、Yahoo!、Google、はてな等のアカウントでログインすれば自由に編集することができます。

割当リソース(Quota)の制御について


背景

charactorbot v1.05.000から、Google App Engineの割当リソース(Quota)をどのように使っていくかを設定する項目ができました。この機能ができた背景としては、GAE1.5.0が本格運用される2011年後半から無料Quotaが実質10分の1以下に削減され、今までと同じ動きで動かすことが不可能になるという通知がされたからです(参考:http://www.google.com/enterprise/cloud/appengine/pricing.html)。
2011年11月07日より、無料Quotaの削減が行われています。v1.5系へのバージョンアップと以降の対策を取らない場合は、リセット後数時間でOverQuotaになると思われますのでご注意下さい。なお、v1.05.003からはデフォルトで最大作成ボット数が23となるようになっています。
charactorbotとしては、この無料Quotaの削減に対して、既存の利用管理者ユーザーが、

1. 稼働ボット数を23まで減らして、今までのサービスを維持する
2. 稼働ボット数を維持して、最速返信スピードを3分以内に落として対応する
3. 有料Quotaを購入して今までの稼働ボット数、サービスを維持する

のいずれかを設定することができるようにしました。無論、設定によっては、1と2の中間のような設定をすることもできます。それぞれのやり方について説明していきます。
なお、この設定例でかならず無料で運用できるとは限りません。
ボットの返信のパターンの数やフォロワーの数によっては調整が必要になると思いますので、参考程度になさってください。加えて、charabotは機構上必ず、24h*InstanceのFrontend Instance Hours(起動インスタンス時間)が必要になります。無料で行う場合にも無料Quotaリセットの16時前には必ずダウンタイムが生じますので、そのダウンタイムが許容できる範囲で調整下さい。Frontend Instance Hours(起動インスタンス時間)は管理コンソールのBilling Historyから確認することができます。



1. 稼働ボット数を23まで減らして、今までのサービスを維持する

まず、既存のキャラボットのユーザーさんにボット数を減らす日時と再募集の通知を行って下さい。

利用ユーザーさんのメールアドレスの確認は、
https://appengine.google.com/
から自分のキャラボットのアプリケーションを設定して、Data > Datastore Viewerの項目を選択し、By kind:のコンボボックスでTwitterAccountを選択すると表示されます。このデータのOwner列がボットの所有者のメールアドレスになります。@以降のドメイン名がないものについては、gmail.comのメールアドレスです。
メールアドレスを集めた後、これらのメールアドレスをBCCを使った送信など受け取った人が他の人のメールアドレスを確認できない送り方で、

・Googleの無料Quota削減に伴うボット数の削減を行うこと
・削除の日時
・限られたボット枠の先着締切の再募集の通知

以上の内容をメール送付してください。

削除するボット、残すボットが決まったら、先ほどの Datastore Viewerでボットの削除を行うことができます。列の左側のチェックを入れた後、表の下にあるDeleteボタンを押すことでボットが削除されます。
そしてこれ以上ボットが作られないようにするために、 ボットの新規作成機能を止める方法 を利用してボットの新規作成を止めます。
以上で、ボットの削除自体は終了ですが、更に、無料Quotaで使うに当たって設定しなくてはならない項目があります。

ボットの実行スレッドの分割設定

デプロイ用パッケージ を使って再度デプロイを行いますが、
war/WEB-INF/appengine-web.xml
というファイルの8行目、
<property name="org.soichiro.charactorbot.server.TwitterBotServlet.isUseBatch" value="true"/>

<property name="org.soichiro.charactorbot.server.TwitterBotServlet.isUseBatch" value="false"/>
と変更してください。この設定は、今までボットは1ボットずつ別のスレッド(コンピューター上の一つの処理の塊)で動かすようにしていたのを、全ボットを1つのスレッドで動かすという設定になります。これによって、安定性は下がりますが、使用リソースは大幅に減ります。
以上の設定をして、「はじめにお読みください.txt」の手順のまま進めてデプロイをしてください。

インスタンス起動に関する設定

なお、この設定と同時にもう一つGoogle App Engineの管理コンソールにてやっておくと良い設定があります。
https://appengine.google.com/
以上のURLから管理コンソールに飛び、そこで自分のデプロイしたアプリケーションを選択します。Administration > Application SettingsにてPerformanceの項目のMax Idle Instances:を1に、Min Pending Latencyを15sに設定してください。こちらは実行遅延が発生しますが、そのかわりコストを抑えるという設定になります。待機インスタンスを常に1に、もうひとつインスタンスを起動する閾値となる遅延を15秒とする設定です。この設定を行うことで劇的にリソースを節約することができます。

ボットのデータ量やフォロワー数などにも影響しますが、これでQuotaリセットの16時前に1時間以内のダウンタイムで無料で使うことができます。


2. 稼働ボット数を維持して、最速返信スピードを3分以内に落として対応する

この対応は全てデプロイ時の設定ですることができます。
デプロイのやり方については、デプロイ用パッケージ の「はじめにお読みください.txt」をご覧ください。

ボットの実行スレッドの分割設定

デプロイを行う直前に、 war/WEB-INF/appengine-web.xml
というファイルの8行目、
<property name="org.soichiro.charactorbot.server.TwitterBotServlet.isUseBatch" value="true"/>

<property name="org.soichiro.charactorbot.server.TwitterBotServlet.isUseBatch" value="false"/>
と変更してください。この設定は、今までボットは1ボットずつ別のスレッド(コンピューター上の一つの処理の塊)で動かすようにしていたのを、全ボットを1つのスレッドで動かすという設定になります。これによって安定性は下がりますが、使用リソースは大幅に減ります。

ボットの最速返信間隔の設定

次に、 war/WEB-INF/cron.xml
というファイルの6行目、

<schedule>every 1 minutes</schedule>


<schedule>every 3 minutes</schedule>

と変更して下さい。この設定は、cronというコンピューターを動かしてTwitterを監視するタイミングを1分間隔から3分間隔に変えるというものです。なお、ボットの設定にて返信間隔を1分にしていた場合も、この設定によって自動的に3分間隔で返信するようになります。なお、3分間隔であってもv1.05.000からタイムライン上のツイートの取りこぼしをしないようになっています。

インスタンス起動に関する設定

なお、この設定と同時にもう一つGoogle App Engineの管理コンソールにてやっておくと良い設定があります。
https://appengine.google.com/
以上のURLから管理コンソールに飛び、そこで自分のデプロイしたアプリケーションを選択します。Administration > Application SettingsにてPerformanceの項目のMax Idle Instances:を1に、Min Pending Latencyを15sに設定してください。こちらは実行遅延が発生しますが、そのかわりコストを抑えるという設定になります。待機インスタンスを常に1に、もうひとつインスタンスを起動する閾値となる遅延を15秒とする設定です。この設定を行うことで劇的にリソースを節約することができます。

ボットのデータ量やフォロワー数などにも影響しますが、これでQuotaリセットの16時前に1時間以内のダウンタイムで無料で使うことができます。


3. 有料Quotaを購入して今までの稼働ボット数、サービスを維持する

この場合は、全く設定を変更をする必要はありませんが、クレジットカードを登録する必要があります。
https://appengine.google.com/
から、自分のアプリケーションを選択し、Billing > Billing Settingsの項目から、Enable billingボタンを押して、クレジットカードの設定をしておきます。現状では月々9ドルと、利用したQuotaの料金が請求されるようになっていますが、滅多なことではcharactorbotのサーバーがOverQuotaで落ちることはなくなります。加えて、ボット数もv1.4.1以前のデフォルトの69ボットである必要はなく、理論上は1000ボットまで利用可能な状態となっています。



1.と2の中間の設定

2分間隔で動作させて35ボット動かすという設定もすることができます。その際は、1.と2.の設定を参考にして、ボット作成上限を35にして、余計なボットを削除し、更にデプロイ時の設定で、「ボットの実行スレッドの分割設定」と「ボットの最速返信間隔の設定」と「インスタンス起動に関する設定」の設定をして再度デプロイをしてください。



無料Quota内で動くボットの最速返信間隔の設定と稼働可能ボット数の対応表

以下の表は、無料Quota内で動くボットの最速返信間隔と稼動可能ボット数の対応表になります。ボットの実行スレッドの分割設定は、falseで1つのスレッドで全ボットを動かす前提となっています。ただし、最速返信間隔が10分以上の場合の検証はしていません。あくまで理論上の数値となります。

最速返信間隔 稼動可能ボット数 Frontend Instance Hours 検証
1 23 データ無し 検証済み
2 35 データ無し 検証済み
3 69 データ無し 検証済み
5 115 29.96 検証済み
10 230 データ無し 未検証
20 460 データ無し 未検証



実際の設定例

以下の表は、「ボットの実行スレッドの分割設定」と「インスタンス起動に関する設定」をした上で実験をして頂いた実際の管理者様から頂いたデータを掲載させて頂いております。設定する際に参考になさってください。また、もしよろしければ追記して頂けると助かります。

最速返信間隔 稼動可能ボット数 Frontend Instance Hours バージョン 備考
1 5 24.08 v1.5.2 返信パターン少なめ。
1 24 24.53 v1.5.2 リプライ数少なめ。
3 5 24.14 v1.5.2 返信パターン少なめ。
5 115 29.96 v1.5.2 返信パターン多め。フォロワー数5桁も有り。
10 115 27.19 v1.5.2 返信パターン多め。フォロワー数5桁も有り。