5

この問題を紹介するために、画像 (各 10MB 未満) を簡略化されたハンドラー (以下) にアップロードしています。F1 (128MB の RAM) インスタンスで ~5 リクエストを処理した後、メモリ制限を超えました: 「合計 6 つのリクエストを処理した後、152.414 MB でソフト プライベート メモリ制限を超えました」

F2 (256MB の RAM) インスタンスでは、さらにいくつかのリクエストを受け取りますが、多くはありません: 「合計 19 のリクエストを処理した後、258.156 MB でソフトプライベートメモリ制限を超えました」

コード例:

import webapp2
class FileUploader(webapp2.RequestHandler):

  def post(self):
    test = self.request.get('file')
    self.response.out.write('hi')

app = webapp2.WSGIApplication([('/leak-uploader-example', FileUploader)],
                              debug=True)

ログ内のテキストは、アプリケーションでメモリ リークが発生している可能性があることを示しています。リクエストが完了した後の Python または App Engine のガベージ コレクションに問題があるようです。ほんの数回のリクエストでインスタンスが終了しないようにする方法について何か提案はありますか?

更新-- (webapp2 の代わりに) webapp フレームワークを使用して同じ動作が見られます: 「合計 6 つの要求を処理した後、143.121 MB でソフト プライベート メモリ制限を超えました」

4

1 に答える 1

2

画像にブロブストアを使用してみませんか? https://developers.google.com/appengine/docs/python/blobstore/#Python_Uploading_a_blob

于 2013-08-08T14:07:08.140 に答える