2

私はスループットを集中的に使用するアプリケーションに取り組んでおり、ボトルネックを特定しようとしているときに、要求本文をディスクに書き込み、要求全体が受信されたときにそれを読み戻すのは、かなり遅い操作であることがわかりました。

私の送信側は、1 回の HTTP POST で最大 512KB のデータを送信しますが、これは変更できないため、サーバーでより適切に処理する方法を探しています。デバッガーを見ると、Play は RawBuffer クラスを使用して着信データを管理し、そのクラスには現在 100KB に設定されているmemoryThresholdフィールドがあります。プログラムまたは構成ファイルを介してこのデフォルトを 512KB に変更する方法を知っている人はいますか?

更新: 成功しなかったこと:

  • application.conf ファイルに「parsers.text.maxLength=512K」と入力します。
  • application.conf の「parsers.raw.maxLength=512K」と「parsers.raw.memoryThreshold=512K」
  • "@BodyParser.Of( value = BodyParser.Raw.class, maxLength = 512 * 1024 )" アノテーションをアクション メソッドに追加します。
  • 上記の 3 つの application.conf プロパティ名はすべて、「512K」ではなく「512288」です。
4

1 に答える 1

3

私が読んだコードを見ると

lazy val DEFAULT_MAX_TEXT_LENGTH: Int = Play.maybeApplication.flatMap { app =>
  app.configuration.getBytes("parsers.text.maxLength").map(_.toInt)
}.getOrElse(1024 * 100)

そのparsers.text.maxLength物件はあなたが探しているものだと思います。

于 2013-01-02T15:49:59.177 に答える