Грешка при зареждане на големи JSON файлове с помощта на Scala Play Framework 2

Опитвам се да използвам Apache Bench, за да тествам група от големи (4MB всяка) JSON заявки. При работа с голям файл и много едновременни заявки получавам следната грешка:

Изключение, уловено в RequestBodyHandler java.nio.channels.ClosedChannelException: null

Ето моята ab команда:

ab -p large.json -n 1000 -c 10 http://127.0.0.1:9000/json-tests

Ако стартирам това без едновременност и само 10 заявки, работи добре. Увеличаването на броя на заявките или паралелността причинява тази грешка да се появява отново и отново.

Моят контролер в момента няма логика в него:

def addJsonTest = Action {
  Ok("OK")
}

Ето пълната грешка:

[грешка] игра - Изключение, уловено в RequestBodyHandler java.nio.channels.ClosedChannelException: null в org.jboss.netty.channel.socket.nio.AbstractNioWorker.setInterestOps(AbstractNioWorker.java:506) [netty-3.9.3.Final. jar:na] в org.jboss.netty.channel.socket.nio.AbstractNioWorker$1.run(AbstractNioWorker.java:455) [netty-3.9.3.Final.jar:na] в org.jboss.netty.channel. socket.ChannelRunnableWrapper.run(ChannelRunnableWrapper.java:40) [netty-3.9.3.Final.jar:na] в org.jboss.netty.channel.socket.nio.AbstractNioSelector.processTaskQueue(AbstractNioSelector.java:372) [netty -3.9.3.Final.jar:na] в org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:296) [netty-3.9.3.Final.jar:na]

Това е просто използване на Play в режим на разработка, има ли настройка или конфигурация, за да може Play да обработва множество големи заявки?

Благодаря!


person Dalton001    schedule 07.11.2014    source източник


Отговори (1)


Трябва да го направите реактивно, с итератори

  val iteratee = Iteratee.foldM[Array[Byte], Either[Result, String]](Right("start")) { case (str, bytes) =>
      Future.successful(Left(Ok))
  }

  val parser = BodyParser(rh => iteratee)


  def eatDust = Action(parser) { req =>
    Ok
  }

Вижте тези връзки.

https://www.playframework.com/documentation/2.2.x/Iteratees

Play 2.x: Реактивно качване на файл с Iteratees

person Stephen    schedule 08.11.2014