*

専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する

公開日: : 最終更新日:2015/11/05 投稿者: GAE

GAEでMemcacheを利用した経験はありますでしょうか?

MemcacheとはGAEで利用可能な分散型のキャッシュシステムのことです。
主な利用目的はデータアクセスの高速化です。例えば、何度も同一クエリを実行する場合、最初の結果をMemcacheに保存し
それ以降はMemcache上のデータを取得することでデータストアへの無駄なアクセスを軽減させることができます。
(Memcache上にデータが存在しない場合は再度データストアでクエリを実行します。)

これまでMemcacheは無料版(共有Memcache)として公開されてきましたが
GAE 1.8.2から有料(プレビュー版)の「専用Memcache」がリリースされました。

この新しいMemcacheでは、最大20GBのキャッシュ容量(0.12ドル/GB/時)が保証され、プレビュー公開終了後には
これまでのMemchache(共有Memcache)にはなかったSLAも提供されると言われています。

ただ、この専用Memcacheは課金をしてまで必要となる割に合うサービスなのでしょうか?
今回は、この専用Memcacheが共有Memcacheよりも本当に優れているのかを検証してみました。

1. キャッシュ容量の比較

そもそもこれまで利用されてきた共有Memcacheは最大どの程度のキャッシュ容量があるのでしょうか?
また、専用Memcacheは本当に20GBも保存できるのでしょうか?

まずは共有Memchacheの容量を検証してみることにします。

1.1. 共有Memchacheの容量検証

1キーに対して約1.2KBの画像データをMemcacheに保存するプログラムをタスクキューで並列実行し、保存データ数と最大保存容量を計測してみました。GAE管理コンソールのMemcache Viewerで確認した結果は以下(画像1参照)の通りです。

画像1. 共有Memcacheの検証結果
検証の結果、データ総数は3,966,298で、保存容量はおよそ4.9GBとなりました。
想定以上のデータを保存することができましたが、共有Memcacheはデータ容量がSLAで保証されているわけではないため
データの消失は自己責任となります。そのため、共有Memcacheを利用する場合はデータが消えることが前提となるプログラムを実装する
必要があります。(GAE経験者としては常識的な話だとは思いますが…)

1.2. 専用Memchacheの容量検証

検証をおこなう前に、まずはMemcacheの利用クラスを専用Memcache用のクラスに切り替える必要があります。GAE管理コンソールの左メニューから「Application Settings」を選択し、Memcache Serviceのクラスを「Shared」から「Dedicated(10k ops/s/GB)」に変更します(画像2参照)。
クラスの変更が保存されると、専用Memcacheが有効となります。

※ クラス、または容量の数値を変更した場合、既に保存されているキャッシュデータは削除されますので注意してください。


画像2. 専用Memcacheへの切り替え
専用Memcacheへの切り替え完了後、1.1と同様のプログラムを実行し、保存データ数と総容量を計測してみました。
Memcache Viewerで確認した結果は以下の通りです。

画像3. 専用Memcacheの検証結果
検証の結果、データ総数は17,042,892で、総保存容量は約21.1GBとなりました。
最大20GBということでしたが、計測上は20GB以上の数値となりました。
これらの結果から、キャッシュ容量については、専用Memcacheの方が優れていることは確かなようです。

2. Memcacheへの書き込み・読み込み速度の計測

次に共有・専用Memcacheそれぞれの書き込み・読み込み速度の計測をおこないました。
保存データには1の検証で利用した1.2KBの画像データを利用しました。

2.1. MemcacheへのR・W速度の比較

検証として、共有・専用それぞれのMemcacheに対して、1,000件のデータの書き込み・読み込みをおこないました。
計測結果は以下(図1参照)の通りです。
※ 検証結果の数値は1000件のデータに対して1処理当たりの平均処理時間(ミリ秒)を表しています。

  共有Memcache 専用Memcache
キャッシュへの書き込み 85.946ms 69.9ms
キャッシュからの読み出し 7.497ms 5.017ms

表1. 共有・専用MemcacheのR・W速度検証結果

専用Memcacheの方がR・Wのいずれの値でも共有Memcacheを上回っていることがわかります。

3.まとめ

以上の検証の結果から、専用Memcacheはこれまで利用されていた共有Memcacheよりも性能がスケールアップしていることがわかりました。
ただし、専用Memcacheを利用する場合1GB毎に毎月$86.4の課金が発生することになります。制限があったとはいえ、これまで無料で利用していたAPIにそれだけの金額を払うのは割高に感じるかもしれません。とは言っても非常に強力なAPIであることには代わりはないので、もし要件として必要になった場合は見積りを立てて利用してみては如何でしょうか。

4. 次回の検証について

次回は、Memcacheの残存期間についての検証をおこなう予定です。1度保存されたデータが一体いつまで残存することができるのかを検証します。また、本サイトではMemcache以外の検証も随時おこなっていますので定期的にチェックしてみてください。

関連記事

Datastoreモデル変更の影響調査

GoogleAppEngine(以下GAEと呼称)に限らず、開発を行なっていると『テーブルの構造を変

記事を読む

GAE/GOでVideo Intelligence APIを操作してみた!!〜事前準備編〜

先週のGCP Next 17’でGoogleから新しい機械学習APIが発表されました!その名

記事を読む

PaaS最前線!たったの15分でできるGAE/GO入門!

はじめに 2015年7月ついにGoogle App EngineのGO言語正式サポートが決定しまし

記事を読む

たった1つのCloud SQLインスタンスで複数のWordPressを動かす

皆様こんにちは。 前回はCloudSQLやCloud Storageを用いてWordpress

記事を読む

GCEにPuttyから簡単接続する

年末ではありますが、先日ちょっとGCE(Google Compute Engine)を触る機会がまた

記事を読む

専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する Part2

前回のGAEの「専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する」が投稿

記事を読む

apps-gcp 2017年1-3月人気記事ランキング

今回のapps-gcpは2017年1~3月の人気記事ランキングです。去年までは月毎でのランキ

記事を読む

静的HTMLをGAE上で公開する

みなさんこんにちは。 本日は、静的HTMLをGAEで公開する手順を紹介します。 本サイトを運営し

記事を読む

東京リージョン内でのGAE・GCS・GCE間の通信はこのくらいだった

11月8日に Google Cloud Platform にて待ちに待った日本リージョンがリ

記事を読む

GAE/JからBigQueryへのStream Insert

今回はGAE/JからBigQueryへのStream Insertを試してみます。 BigQuer

記事を読む

PAGE TOP ↑