2015-09-22 16 views
6

私は最近、AppEngineバックエンドで動作するiPhone/Android用のアプリを立ち上げました。これはAppEngineを本番で初めて使用した経験です。Google App-Engine memcached極端に遅い

トラフィックが増えるにつれ、深刻な遅延問題が発生し始めています。現在のところ、アイドル状態の最小インスタンスは1、max_pending_latencyは1秒です。

はい、レイテンシが要求/秒、交通、MemoryUsageの、memcacheUsage、何と相関していないのはなぜしかし、私は

  1. を理解していない、私の側の最適化のための部屋があります。なぜ私は9月21日に大きな待ち時間がなかったのか分かりません。

  2. なぜmemcachedの呼び出しが500msほど遅い必要があるのでしょうか。 (通常は10倍速くなります)。私はNDBと1GB専用のmemcachedを使用しています。 5GBまで増加しても効果はありませんでした。

これはAppEngineの仕組みですか?私はあなたの洞察力を得たいと思います。

おかげ

LatencyRequests per secondExample RPC

+1

freenodeまたはメーリングリストの#appengineチャンネルでこれを聞いてください。あなたのrpcのチャートには、ndbトランザクションの同期セットが表示されますが、memcacheの部分はそれほど長くはなりません。 –

+1

私が知っている限り、Memcacheのような時を見ることは可能です。パフォーマンスタイムは、専用(有料)Memcacheを使用しない限り保証されません。 [source](https://cloud.google.com/appengine/docs/python/memcache/#Python_Limits) – Nick

+0

@JoshTriiJohnston良い接点を提案してくれてありがとう。あなたが指摘したように、同期呼び出しを並列化するか、タスクキューに送信する必要があります。 –

答えて

0

は、我々は同じmemcacheのキーの下にエンティティの多くを保存し、逆シリアル化中に非常に長い時間を経験しました。多くの構造化プロパティを持つエンティティの大きな配列を格納すると、時間がかかることがあります。

同じキャッシュキーに1Mo以上のオブジェクトサイズを格納することはできません。 Titan for App Engineを使用して、sharded memcacheを使用して、他のいくつかのキャッシュキーでキャッシュキーを分割することができます。それは透明です。

私はそれがあなたを助けてくれることを願っています。

関連する問題