風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

GAE-Cronのタイマ負荷軽減と不具合修正(version:0.01e)

GAE-Cronのタイマ処理を見直し、負荷の低減を試みました。
version 0.01dの時もそんなことを言っていましたが(苦笑)、今回はより抜本的に修正してみました。
タイマ数が多く、かつ、それぞれの間隔が短い場合に効果的に働くと思います。
250個のタイマ(全て1分間隔:*/1 0 0 0 0)で試したところ、CPU負荷がversion 0.01dと比較して約半分となり、Over Quotaが出なくなりました。

version 0.01d時



version 0.01e時



グラフで見れば、0.01dのとき(0.3弱)が0.01eになると約半分(0.15程度)になり、表で見ると特に負荷の大半を占める /gaetimer/timercycle のAvg CPUが545→251と低減しているのがわかると思います。
代わりに/check_timerのAvg CPUが5855→8223と上がっていますが、頻度が140倍以上程度違うため、CPU負荷全体に与える影響は小さくなります。
実験は1ユーザ×250タイマでやっているので多少極端ですが、50ユーザ×5タイマの場合では、前者が1400〜1500回/hour前後程度コールされるのに対して、後者は10回/hour前後程度で、かつ、後者のAvg CPUはもっと下がります。

その他、

  • 管理者権限でログインしたときの[全タイマ設定]ボタンを左上に配置し、他のリンクと押し間違えにくいようにした。
  • トップページにバージョン表示が出るようになった。

他、若干の不具合修正等を行なっています。
設置されている方は、お手数ですが出来ましたら最新版への更新をお願いします。

ダウンロード(version:0.01e):gaecron-v001e.zip

更新方法

前回(version:0.01d)から変更があるのは

  • README
  • gaecron.py
  • gaetimer.py
  • css/gc-common.css
  • template/gc-top.html
  • template/gc-user-header.html

の 6 ファイルです。

前回デプロイ時に使ったフォルダに上記ファイルを上書きしてデプロイして下さい。
注意点として、

  • gaecron.pyソース内のPATH関係を修正して使っていた場合には、新しいファイルでも同様の箇所を修正してから、上書きして下さい。
  • 設定ファイル(*.yaml)等については、これまでのものをそのまま使って下さい。
  • デプロイ後、GAE-Cronに(管理者アカウントで)ログインし、左上にある[全タイマ再設定]ボタンを押して下さい

2009年7月下旬から本日までに作ってみたツールやサービスなど

覚書を兼ねてまとめ

  1. ふたつの記事を共にブックマークしているユーザの抽出するRubyスクリプト(2009/07/23)
  2. ぜんぶ読んだ4!(2009/09/27)
  3. ★のオススメ(starentry)(2009/10/02〜)
  4. TwitDungeon(2009/10/06)
  5. はてなグループのRSSを最新記事のURLとタイトルも含むようにするAPI(2009/10/07)
  6. Twitterにキー操作ではてなスターをつけるGreasemonkey(2009/10/10〜)
  7. TwitBot Club(※現在新規受付けはやっていません)(2009/10/13〜)
  8. Mashup Awards 5 API一覧(2009/10/14)
  9. TwitterのリストRSS取得API(2009/10/31)
  10. はてなボトルの質問をQuitteer/Quetter/Q&Aなうに横流し(2009/11/19〜)
  11. GAE用Twitter OAuthライブラリ(2009/11/19)
  12. Quetter Plus(2009/11/21)
  13. Star Counter:任意のページではてなスターカウンタ表示&スターが付けられるGreasemonkey(2009/11/22)
  14. 星見の宴(2009/11/25)
  15. twitimejp:Twitterの時刻表示を○年○月○日(△) ×時×分×秒にするブックマークレット/ユーザサイドスクリプト(2009/11/26)
  16. GAE-Cron:フリーの簡易 web cron サービス登録サイト(2010/01/18〜)
  17. TwSwapName:Twitterのタイムラインに名前を表示するユーザーサイドスクリプト(2010/02/02〜)
  18. @nifty ダイナミックDNSのIPアドレスを更新するPerlスクリプト(2010/05)
  19. GIS_AutoPager:Google画像検索AutoPager(2010/05/15〜)
  20. れとろ・ちゃっと:Twitter認証を使ったレトロ風味・簡易チャットシステム(2010/05/26〜)
  21. はてなID ⇔ Twitterユーザー名の相互変換API(2010/05/29〜)
  22. backstage_pass:サンデーまんが家バックステージをページングするユーザサイドスクリプト(2010/06/10〜)
  23. twModHead:Twitterの個別ページでアイコン等を前に持ってくるユーザサイドスクリプト(2010/06/08〜)
  24. TwitterアイコンURL取得API(2010/0/15)
  25. RSSをiCal形式に変換するAPI(試作版)(2010/06/15)
  26. ツイちぇき!を追跡する非公式bot(2010/06/17)
  27. Retweet Avatars(改造版)(2010/06/18)

総評

途中、結構ブランクがあったんですが(2010年2月初旬〜4月下旬までほとんどネット上で活動していない)、それでも割と数だけはありますね。
あ、でも前回から1年近く経っていることを考えると、少ないのかも知れない。
相変わらずGoogle App Engine/PythonとJavaScript(ユーザサイドスクリプト含む)がほとんどです。
また、例によって、Webサービス系は概ね、閑古鳥が鳴いています。
たまに比較的人気があった TwitBot Club は現在新規登録出来ませんしね。EasyBotter Ver.2.0相当にしてソースをさらそうかと思ってはいるんですが、なかなかやる気が出てきません。あとは、GAE-Cronだけが割と使われている感じかな…。