我正在使用Play 2.4.6,Scala 2.11.8和Cassandra 2.1.14。几天前,我遇到了客户在15-20秒后收到来自游戏应用程序的回复的问题。我已经设置了2个运行播放应用程序的服务器,两个服务器都有8个核心。我不确定为什么播放应用程序响应如此缓慢。 CPU使用率非常低,约为15%。我使用fork-join pull和以下参数
session.connection().setAutoCommit(false);
cs = session.connection().prepareCall("{?=call dequeue}");
cs.registerOutParameter(1, OracleTypes.CURSOR);
cs.executeUpdate();
session.connection().commit();
ResultSet rs = (ResultSet) cs.getObject(1);
while(rs.next())
我在所有控制器中使用上面的池作为ExecutionContext,所有请求都包含在Action.async中。据我所知,play支持非常高的并发请求。在我的情况下,我只收到800个请求,我有两台服务器来处理请求。
当我尝试达到1000个并发请求时,所有请求都在不到50毫秒的时间内完成。我在本地环境中使用单核系统尝试了这一点。
我已经浏览了各种博客,并且看到对于IO fork join pool不应该是选择。我无法理解出了什么问题。有人可以解释可能存在的问题吗?我怎么能断定线程池是个问题呢?什么是“parallelism-max”的意思?它是否保持线程池数的上限?