Slick/HikariCP 给出 "too many connections" 而不是超时
Slick/HikariCP giving "too many connections" instead of timeouts
我正在使用 Slick3.1.1
+ HikariCP2.5.1
连接到 AWS t2.medium
MySql 实例。 AWS 文档说 t2.medium
最多可以有 312 个连接。我的配置文件是:
rdsConfig = {
url = "jdbc:mysql://mydb.........us-west-2.rds.amazonaws.com:3306/owlschema"
driver = "com.mysql.jdbc.Driver"
connectionPool = HikariCP
maxConnections = 222 # <<<<< ie make this < 312.
keepAliveConnection = true
properties = {
user = "me"
password = "mydarksecret"
}
numThreads = 40
}
当我用重物击中它时,我开始出现 'too many connections' 错误:
17:05:40.708 DEBUG [] [rdsConfig connection adder] com.zaxxer.hikari.pool.HikariPool - rdsConfig - Cannot acquire connection from data source
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Too many connections
at sun.reflect.GeneratedConstructorAccessor59.newInstance(Unknown Source) ~[na:na]
...
我对此感到困惑。从文档中我认为它永远不应该尝试获得超过我指定的 222 个连接,这永远不会超过 AWS 限制。我期望在重负载下会超时,但不会出现 'too many connections' 错误。那么 maxConnections
是做什么的呢?谢谢。
已修复。正如上面@Pawel Dolega 所建议的,我还设置了 minConnections = 222
作为实验。在启动应用程序时,我立即开始收到 too many connections
错误,即使没有负载也是如此。结果是我的错误:我实际上打开了多个单独的数据库实例,因为我在每个需要数据库访问的 class 中使用了以下特征:
trait dbCore {
val db = Database.forConfig("rdsConfig")
}
所以每个 class 都在使用自己单独的 222 个连接上限。将此特征更改为对象而不是修复错误 - 现在所有 classes 使用相同的单例数据库实例,因此 maxConnections
上限得到了适当的尊重。
我正在使用 Slick3.1.1
+ HikariCP2.5.1
连接到 AWS t2.medium
MySql 实例。 AWS 文档说 t2.medium
最多可以有 312 个连接。我的配置文件是:
rdsConfig = {
url = "jdbc:mysql://mydb.........us-west-2.rds.amazonaws.com:3306/owlschema"
driver = "com.mysql.jdbc.Driver"
connectionPool = HikariCP
maxConnections = 222 # <<<<< ie make this < 312.
keepAliveConnection = true
properties = {
user = "me"
password = "mydarksecret"
}
numThreads = 40
}
当我用重物击中它时,我开始出现 'too many connections' 错误:
17:05:40.708 DEBUG [] [rdsConfig connection adder] com.zaxxer.hikari.pool.HikariPool - rdsConfig - Cannot acquire connection from data source
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Too many connections
at sun.reflect.GeneratedConstructorAccessor59.newInstance(Unknown Source) ~[na:na]
...
我对此感到困惑。从文档中我认为它永远不应该尝试获得超过我指定的 222 个连接,这永远不会超过 AWS 限制。我期望在重负载下会超时,但不会出现 'too many connections' 错误。那么 maxConnections
是做什么的呢?谢谢。
已修复。正如上面@Pawel Dolega 所建议的,我还设置了 minConnections = 222
作为实验。在启动应用程序时,我立即开始收到 too many connections
错误,即使没有负载也是如此。结果是我的错误:我实际上打开了多个单独的数据库实例,因为我在每个需要数据库访问的 class 中使用了以下特征:
trait dbCore {
val db = Database.forConfig("rdsConfig")
}
所以每个 class 都在使用自己单独的 222 个连接上限。将此特征更改为对象而不是修复错误 - 现在所有 classes 使用相同的单例数据库实例,因此 maxConnections
上限得到了适当的尊重。