2012-02-17 8 views
22

私のアプリケーションのユーザーが、自分のアプリケーションを使用して電子メールの添付ファイルとしてファイルを送信しようとしました。しかし、そうすることは、私はトラブルGAEの「ソフトプライベートメモリの制限」とは何ですか?

Exceeded soft private memory limit with 192.023 MB after servicing 
2762 requests total 

While handling this request, the process that handled this request was 
found to be using too much memory and was terminated. This is likely to 
cause a new process to be used for the next request to your application. 

If you see this message frequently, you may have a memory leak in 
your application. 

何「ソフトのプライベートメモリの上限が」で、何がこの例外をもたらす可能性が高いでした解読を抱えている、次の例外が発生しましたか?

+1

GAEがアプリを実行しているプロセスで使用できるメモリ容量の上限を適用しているかのように見えます。あなたのアプリはこの制限を超えました(たぶん、バッファに非常に大きな添付ファイルを保持しようとしていますか?)ので、システムはそれに対して対処しました。私が混乱している部分は、プロセスが「終了」しているというメッセージが表示されているため、この例外はどのスレッドで発生しましたか? –

+1

@SteveJessop AFAIK、プロセスは終了する前に最後の要求を完了することができました。 –

答えて

21

「ソフトプライベートメモリの制限」は、App Engineがインスタンスがそれ以上のリクエストを受信しないようにし、未処理のリクエストを待ってインスタンスを終了させるメモリ制限です。あなたはあまりにも多くのメモリを使用しているときにそれを優雅なシャットダウンと考えてください。

しばらくの間ソフトリミットを叩くのは、すべての要求が完了した時点で完了しているためです。ただし、これが発生するたびに、次のリクエストが新しいインスタンスを起動し、遅延の影響を受ける可能性があります。

20

あなたが最低クラスのフロントエンドまたはバックエンドインスタンスを使用していると仮定します。 (F1またはB1クラス)どちらも128 MBのメモリクォータを持っているので、あなたのアプリはこのクォータ制限を超えている可能性が非常に高いです。しかし、このクォータは厳密には強制されておらず、Googleはこれにいくつかの寛大さを持っています(したがって、用語soft limit)、App Engineで終了する前に数百分のメモリを消費するいくつかのF1アプリインスタンスがありました。

インスタンスクラスを256 MBのメモリクォータを持つ次の上位クラス(F2またはB2)に増やし、エラーが再発するかどうかを確認してください。また、添付ファイル付きの電子メールを送信するたびにエラーが再現可能かどうかを調査します。あなたが見ているものが症状であるが原因ではない可能性があるため、多くのメモリを消費するアプリの部分は他の場所にあります。

+2

私は最低クラスのインスタンスを使用しています。これはメモリの上限を上げるための良い呼び出しです。大きなインスタンスを選択して大きなものを添付してみます。 – user714852

+0

バックエンドを更新することも忘れないでください。 AppEngineはデフォルトでB1を実行します。試してください:appcfg.pyバックエンド。更新(https://groups.google.com/forum/?fromgroups=#!topic/google-appengine/7U5sVDpjcmkも参照してください) –

+1

私には、メモリリークが発生しているようですが、GAEのインスタンスがメモリを解放していないようです正しく。 – Jonny

関連する問題