以前公開した、拙作APIの負荷が結構スゴいす。
・Delicious2.0 の被ブックマーク数画像取得APIを作りました
Deliciousがオフィシャルに非ブックマーク数画像取得APIを用意する気がないみたいなので、色んなサイトやサービスで利用していただいているようです。それ自体は嬉しい事なんですが、想定以上にアクセスが増えています。
APIへのアクセス状況
- リクエスト数
- 35,000 req(/1日)
- 1000,000 req(/1月)
月100万リクエストもきています・・・。
ってか、APIというサービス特性から考えればこのくらいは普通なんだろうけど、これほど使われるとは思っていなかったのです。
で、実際にやっている事は、DeliciousのAPIを叩いてAmazon S3にブックマーク数の画像を保存しているくらいなので、1リクエストあたりの負荷はそんなに大した事ないはずなんです。が、Delicious APIのレスポンスが遅い時もあるし、S3は平均的に遅かったりするので処理時間は結構かかったりしています。
キャッシュもたまりにたまって・・・
外部へのリクエストのオーバーヘッドがすごいので、内部的にAPIの結果や画像をキャッシュさせているのですが、レンサバでmemcachedとか使えないので普通にファイルに書き出していました。そしたら、いつのまにかキャッシュファイルだけで1.5GBとかになってレンサバのファイル上限を超しちゃったりしてました。
しかも、1フォルダに数十万ファイルとかできてて削除するもの一苦労っていう…。
そもそもキャッシュ削除を考えてなかったのが悪いんですけどね。
今後
とりあえず、キャッシュを定期的に削除する仕組みはすで入れてあるんですが、リクエスト数に応えきれていないのは変わりません。もうちょっとキャッシュを長くしたり、S3を使わない方法を考える必要がありそうです。
というか、今のレンサバ(Xrea)での運用は限界かもなぁ。
別のサーバー(CoreServer?)に引っ越すか、ラボ自体をGoogleAppEngineに移行していくってのが良いかもしんない。(けど、時間かかるだろな)