GAE/PythonのアプリにMemcached組み込んだら、CPU負荷が3分の1になった。
GAEは宇宙最強のデータセンタで動いてる。なら、負荷なんて気にしなくていい。お金さえあればね。ってことで、お金払いたくないので最適化しました。数行の変更で、性能3倍以上になっちゃいましたよ!!!!
最適化対象
ブログに埋め込むパーツです。シンプルですが、とあるまとめサイトに埋めたところ、1日数万リクエストがありました。Memcachedを使わなくても、1日50万PV程度は大丈夫だったのですが、最適化してみました。
Memcached導入による負荷の変化
赤い線がAPIが使ったCPU時間、青い線が全体のCPU時間です。Memcachedを組み込んだとたん、CPU使用量が3分の1になりました。特に、APIのCPU使用量は劇的に減っています。
無料利用分でどれだけつかえるの?
超過しそうなリソースはCPU時間とOutboundの転送量。それぞれ1リクエスト当たり10msと400byteです。
CPU無料枠
6.5時間/10ms = 234万PV
Outbound転送無料枠
1GB/400byte = 250万PV
これなら、1日200万PVは余裕ですね。
Memcached組み込み後のソースコード
データ読み取り処理(quickGet)
Memcachedにデータがあるか確認します。あれば使います。なければ、DataStoreから取得しMemcachedに保存します。
データ書き換え処理(18行目)
DataStoreに保存したデータと同じものをMemcachedに保存します。