问题描述
假设我们有一个客户端想要并行发送 N 个查询和一个单节点数据库服务器。服务器有 4 个 cpu 内核和网络设备来接收/发送数据。 这是否意味着没有理由与服务器有 4 个以上的并行连接,因为它只能并行接收 4 个“数据流”?甚至不说磁盘 I/O 等...
说到网络,在物理层面上没有并行,所以我们没有因为这个层面的并行连接而获得收益,对吧?
客户端连接池中的理想连接数是多少?应该考虑什么?也许有一些关于这个主题的文章?
编辑:如果我们针对延迟而不是吞吐量进行优化
解决方法
我认为您最终需要衡量,这也取决于您的查询的性质,但 HikariCP 有一篇关于连接池大小的好文章:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
您应该测试您的应用程序,即模拟预期负载,并围绕此起点尝试不同的池设置:connections = ((core_count * 2) + Effective_spindle_count)