Я использую Slick3.1.1
+ HikariCP2.5.1
для подключения к AWS t2.medium
Экземпляры MySql. В документах AWS говорится, что t2.medium
может иметь 312 максимальных соединений. Мой файл конфигурации:Slick/HikariCP дает «слишком много соединений» вместо таймаутов
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
}
Когда я ударил его с большой нагрузкой я начинаю получать ошибки «слишком много подключений»:
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. Я ожидал получить тайм-ауты под большой нагрузкой, но не «слишком много ошибок соединения». Так что же делает maxConnections
? Благодарю.
Это также происходит, если вы установили 'minConnections' в' 222'? (давайте просто будем уверены, что проблема заключается в том, что проблема с Slick заключается в резервировании большего количества подключений, чем указано, а не в том, что MySQL выбрасывает исключение намного ниже предела) –
Это не происходит. Журнал показывает, что он открывает соединения один за другим, и если загрузка не слишком тяжелая, у нее никогда не возникает проблемы. Это только в том случае, если нагрузка становится слишком высокой, что открывает слишком много соединений. – thund
Вы имеете в виду даже когда вы устанавливаете 'minConnections = 222'? –