2011-07-07 12 views
1

Javaを使用してGoogle App Engine用のアプリケーションを作成しています。特定のサーブレットが32メガバイトの制限を超える応答を生成します。開発サーバーでは、これは何の問題も生じないようです。実動サーバーでは、いくつかの要求に対して応答を分割する方法が必要です。Google App EngineのHTTP応答サイズを検出する方法

制限を超えたときに本番サーバーで何が起こるかを知りたい。制限を超えた場合、PrintWriterIOExceptionを投げますか?または、サーブレットが終了したときにだけ例外がスローされますか?理想的には、各セクションを追加する前に合計レスポンスサイズを計算することができます(HTTPヘッダーのサイズがわからないため、バイト数は数えません)。レスポンス(JSONオブジェクトを完成させるために「}」を追加します)。または、このような状況を処理するためのより良い方法がありますか?

+0

最近、App EngineのHTTPリクエストとレスポンスの制限が32MBに引き上げられました。それ以前は10MBだった。 –

+0

ドキュメントでは、要求の場合は32 MB、応答の場合は10 MBと言います。この制限を超える可能性は低いですが、確かに可能です。だから私はその質問がまだ有効だと思う。 – Zifre

+0

"私はHTTPヘッダーのサイズがわからないので、自分自身でバイト数を数えることなく"。さて、ヘッダーはそれほど大きくならないでしょう。あなたが25Kを許可すれば、安全でなければなりません。 – Thilo

答えて

0

ニックの権利では、現在の応答サイズの制限は32MBです。

アプリエンジンが応答データをバッファするため、コードの実行が完了するまで応答が表示されないため、例外が発生したり、コードでキャッチできるエラーが発生したりすることはありません。

HTTPレスポンスがあまりにも大きかった:34000134.制限がある:33554432.

あなたはhttp://shell.appspot.com/でこれを実行することにより、それを自分で試すことができます。

代わりに、それはこのような体で、クライアントに500を返します。

print 'x' * 34 * 1000 * 1000

+0

これを回避する方法はありますか?たとえば、 'app.yaml'でカスタムランタイムを使用していますか?私は32MBを超えるファイルをクライアントにダウンロードするストリーミングメディアアプリを開発しており、大容量のメディアファイルをストリーミングするのをサポートするにはGCEが必要です。現在、GCE(1)は応答データをバッファリングしており、(2)は32MBの制限( 'runtime:ruby'を使用)を持つ可能性があります。 – Tronathan

関連する問題