我正在尝试使用Apache来加载一组大型(每个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")
}以下是完整的错误:
错误播放-在org.jboss.netty.channel.socket.nio.AbstractNioWorker.setInterestOps(AbstractNioWorker.java:506) netty处捕获RequestBodyHandler java.nio.channels.ClosedChannelException: null -3.9.3.Final.jar:na at org.jboss.netty.channel.socket.nio.AbstractNioWorker$1.run(AbstractNioWorker.java:455) netty-3.9.3.Final.jar:na at org.jboss.netty.channel.socket.ChannelRunnableWrapper.run(ChannelRunnableWrapper.java:40) nettyorg.jboss.netty.channel.socket.nio.AbstractNioSelector.processTaskQueue(AbstractNioSelector.java:372) netty-3.9.3.Final.jar:na at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:296) netty-3.9.3.Final.jar:na
这只是在开发模式中使用Play,是否有任何设置或配置来让Play处理多个大型请求?
谢谢!
发布于 2014-11-08 10:31:39
您需要使用迭代器来反作用地执行此操作。
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://stackoverflow.com/questions/26808067
复制相似问题