[英]Error loading large JSON files using 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中捕获了异常:org.jboss.netty.channel.socket.nio.AbstractNioWorker.setInterestOps(AbstractNioWorker.java:506)为null [netty-3.9.3.Final。 jar:na]在org.jboss.netty.channel上的org.jboss.netty.channel.socket.nio.AbstractNioWorker $ 1.run(AbstractNioWorker.java:455)[netty-3.9.3.Final.jar:na]。 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处理多个大请求?
谢谢!
您需要使用迭代器来进行反应
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
}
请参阅这些链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.