*

専用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以外の検証も随時おこなっていますので定期的にチェックしてみてください。

関連記事

GAE/JからBigQueryへのStream Insert

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

記事を読む

AppEngine Security Scan Tool

AppEngine Security Scan Toolが利用出来るようになりました。ついては、GA

記事を読む

GAEでWordPressを動かす

これは2014年時点での記事になります。 2015年版の記事がありますのでそちらをご参照下さい。

記事を読む

Cloud Loggingの利用方法

はじめに 本記事はGoogle Cloud Platformの公式ページで公開されている「Goog

記事を読む

Datastoreモデル変更の影響調査

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

記事を読む

Search API詳細解説 Part6「Search API 詳細 限界値編」

みなさん、こんにちは。 前回はSearch APIの反映速度について調べてみましたが、いかがだった

記事を読む

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

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

記事を読む

Search APIの「Faceted Search」を使ってみた

Search API詳細解説シリーズは完結しましたが、2015年2月19日のAppEngine SD

記事を読む

GAリリース記念!!今更だけどGAE Flexible Environmentのチュートリアルを試してみた!

GAE Flexible Environment(以下FE)のGA(General Availa

記事を読む

Google App EngineからのSpreadSheetの権限変更について

Google App Engine(以下GAE)からGoogleDocsのSpreadSheetを操

記事を読む

PAGE TOP ↑