我面临的情况是我的应用程序正在处理队列中的请求,即一次一个请求。当一个请求完成时,另一个请求开始执行,依此类推。为了模拟这个,我开发了一个小代码。
我在新的新应用程序中使用默认播放设置尝试了此方案。我试图在浏览器中的不同标签中多次模拟加载和点击网址。
这是我的Akka配置
akka.actor.default-dispatcher.fork-join-executor.pool-size-max = 64
//这是我的控制器动作
import play.api.libs.concurrent.Execution.Implicits._
def sayHello = Action { implicit request =>
println("before")
Async {
Thread.sleep(20000)
WS.url("http://www.example.com").get().map { response =>
// This code block is executed in the imported default execution context
// which happens to be the same thread pool in which the outer block of
// code in this action will be executed.
Ok("The response code was " + response.status)
}
}
}
行为相同......在前一个请求完成之前,后续请求才会生效,这意味着一次只能执行一个请求。
Akka版本2.3.0(虽然它与2.2.3一样工作方式) 播放2.2.1版
在这里寻求社区的帮助......或者我做错了什么?
![Thread details][1]
RMI TCP Accept-0 4:58.094(100.0%)0.0(0.0%)0.0(0.0%)0.0(0.0%)4:58.094 附加监听器4:58.094(100.0%)0.0(0.0%)0.0(0.0%)0.0(0.0%)4:58.094 螺纹-7 4:58.094(100.0%)0.0(0.0%)0.0(0.0%)0.0(0.0%)4:58.094 螺纹-6 4:58.094(100.0%)0.0(0.0%)0.0(0.0%)0.0(0.0%)4:58.094 过程收割者4:58.094(100.0%)0.0(0.0%)0.0(0.0%)0.0(0.0%)4:58.094 信号调度器4:58.094(100.0%)0.0(0.0%)0.0(0.0%)0.0(0.0%)4:58.094 主要4:58.094(100.0%)0.0(0.0%)0.0(0.0%)0.0(0.0%)4:58.094 RMI TCP连接(2)-192.168.5.29 4:57.261(100.0%)0.0(0.0%)0.0(0.0%)0.0(0.0%)4:57.261 RMI TCP连接(1)-192.168.5.29 2:42.952(68.1%)0.0(0.0%)1:16.078(31.8%)0.0(0.0%)3:59.030 JMX服务器连接超时52 0.0(0.0%)0.0(0.0%)4:58.094(100.0%)0.0(0.0%)4:58.094 RMI调度程序(0)0.0(0.0%)0.0(0.0%)4:58.094(100.0%)0.0(0.0%)4:58.094 螺纹-4 0.0(0.0%)0.0(0.0%)4:58.094(100.0%)0.0(0.0%)4:58.094 终结器0.0(0.0%)0.0(0.0%)4:58.094(100.0%)0.0(0.0%)4:58.094 参考处理程序0.0(0.0%)0.0(0.0%)4:58.094(100.0%)0.0(0.0%)4:58.094
的问候,
玛鲁
答案 0 :(得分:1)
在测试时,请确保您正在生产模式下运行:play start
并根据文档http://www.playframework.com/documentation/2.2.x/ThreadPools
仔细检查您的主题配置您需要确保根据要一次处理的阻止请求数来确定线程池的大小。您可以使用jvisualvm
查看线程使用情况。