akka {
actor {
default-dispatcher {
executor = "thread-pool-executor"
throughput = 1
thread-pool-executor {
fixed-pool-size = 109 # db conn pool (100) + number of cores (8) + housekeeping (1)
}
}
}
}
public CompletionStage<Result> asyncDb() {
CompletableFuture<Integer> future = new CompletableFuture<>().supplyAsync(() -> {
Ebean.createSqlQuery("select sleep(3)").findUnique();
return 0;
});
return future.thenApplyAsync(integer -> ok("done"));
}
我使用sbt start运行系统,并使用apache Benchmark进行测试:
ab -n 10000 -c 100 -r -k http://localhost:9000/asyncDb
问题是播放仅使用池中的7或8个连接,而其他mysql连接空闲,同时有请求,为什么?
Greg Methvin
在play google group中回答了我的问题:我认为问题是CompletableFuture.SupplyAsync没有使用默认的调度程序。而是使用ForkJoinPool.CommonPool()。(参见此链接)
您需要使用接受执行程序的版本
对于执行器,您实际上有两个选项:
问题内容: 我对Hibernate非常陌生,刚刚开始研究将其与MySQL数据库一起使用的Web应用程序。我注意到社区文档教程指出: 内置的Hibernate连接池绝不用于生产用途。它缺乏在任何体面的连接池中都能找到的若干功能。 有人可以详细说明吗?它到底缺失了什么?人们对“默认”有什么问题?在谷歌搜索时,我在这里找到了一个网站,但它并没有真正解释问题,只是您应该使用的是什么。 问题答案: 什么是连
我正在尝试按照本教程实现nodejs mysql数据库。我知道 查询()是Pool.GetConnection()+Connection.Query()+Connection.Release()的快捷方式。 在本文中,数据库配置为: 这是可以用作: 但是,我真的不明白 如果使用pool会自动释放连接,为什么我们需要这样做呢?
我正在用vaadin和spring开发一个Web应用程序java,比如容器和eclipse链接,比如持久化框架。现在我想在我的应用程序中使用一个连接池。我在谷歌上读了一些我还没读到的东西。这是我的应用程序配置: 我的春日文脉 我的persistence.xml 但我得到以下异常:
问题内容: 与 那两个工作正常。 使用连接池背后的想法是什么?什么时候使用? 问题答案: 从redis-py docs: 在后台,redis- py使用连接池来管理与Redis服务器的连接。默认情况下,您创建的每个Redis实例将依次创建自己的连接池。通过将已创建的连接池实例传递给Redis类的connection_pool参数,可以覆盖此行为并使用现有的连接池。您可以选择执行此操作,以实现客户端
使用来自DBCP的BasicDataSource,如果我们执行getConnection()并且在最后一个块中我们关闭连接,它是真的将连接返回到池还是关闭连接。我正在检查的代码片段是这样的 我正在检查BasicDataSource的源代码,并访问了这个包装类以获取连接。 委托对象的类型为java。sql。联系包装器代码调用委托的close方法,该方法将关闭集合,而不是将连接返回到池。这是DBCP的