在几次代码更改之后,Spring Boot进入了一种令人不安的状态,并在我的控制台日志中充斥着堆栈跟踪,说它无法获得DB连接。如何让Spring Boot避免实时重新加载的问题?如果我杀死它并用mvn spring boot:run再次运行它,它就会工作(但这需要更长的时间)。
引起原因:org.springframework.jdbc.CannotGetJdbcConnectionExcION:无法获取JDBC连接;嵌套异常com.mysql.jdbc.exceptions.jdbc4.数据源拒绝建立连接,来自服务器的消息:"连接太多"
我在我的pom.xml
中安装了Spring DevTools,用于实时重载。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
这是我启动时的数据源。默认的
testOnBorrow
为true。
2018-12-03 16:09:39.530INFO 14804 --- [ restartedMain]c. s. s.该应用程序:DATASOURCE=org.apache.tomcat.jdbc.pool.DataSource@72d10b82{Connectionpool[defaultAutoCommit=null; defaultReadOnly=null; defaultTransactionIsolation=-1; defaultCatalog=null; driverClassName=com.mysql.jdbc.驱动程序;maxActive=100; maxIdle=100; minIdle=10;初始大小=10; maxWaet=30000; testOnBrow=true; testOnReadOnly=false; timeBetweenEvictionRunsMillis=5000; NumTestsPerEvictionRun=0; minEvictableIdleTimeMillis=60000; testWhileIdle=false; testOnConnect=false;密码=********; url=jdbc:mysql://localhost:3306/appdb?useSSL=false; username=root; validationQuery=/*ping*/SELECT 1; validationQueryTimeout=-1; validatorClassName=null; validationInterval=3000;访问ToUnderlyingConnection允许=true;移出放弃=false;移出放弃超时=60; logAbandated=false;连接属性=null; initSQL=null; jdbcInterceptors=null; jmxEn的=true; FairQueue=true; useEquals=true;放弃时百分满=0; maxage=0; useLock=false; dataSource=null; dataSourceJNDI=null;疑似超时=0;替代用户名允许=false;委员会返回=false; rollback返回=false; useDisposableConnectionFacade=true; logValidationError=false;传播中断状态=false;忽略ExceptionOnPreLoad=false; useStatementFacade=true;}
根据您的组织,您的池大小为10到100个连接。阿帕奇。公猫jdbc。水塘数据源
。100是一个很大的连接。如果您打开了100个连接,则表示您:
>
不关闭从池中获取的连接对象。连接对象必须关闭,以便池可以重用它。确保被调用的off()
的一种方法是始终使用try-with-Resources
:
try (Connection conn = dataSource.getConnection()) {
...
}
在您没有机会触发30秒超时的短时间内打开它们(例如,您设置的maxWait=30000
选项)<代码>连接要重用对象,请参阅HikariCP wiki:关于池大小。
不幸的是,判断发生了什么的唯一方法是调试应用程序,看看为什么连接用完了。
问题内容: 我正在用MySQL建立一个网站。我将TOAD用于MySQL,突然出现错误,无法连接数据库: “太多联系” Toad for MySQL中有什么方法可以查看现有连接以杀死它们或简单地将所有连接全部关闭? 问题答案: 不, 没有内置的MySQL命令 。有多种工具和脚本支持它,您可以手动终止某些连接或重新启动服务器(但这会比较慢)。 使用查看所有连接,进程ID是你想杀死。 您可以编辑超时设置
问题内容: 如您所见,我在数据库连接上遇到问题。它给了我这个错误: …由于许多连接错误而被阻止 我搜索了一些答案,但无法解决问题。 我不知道我是否提供了您需要的所有信息,所以如果您需要其他信息,请告诉我。我有来自不同计算机的数据库连接,并且创建了一个用户来访问该数据库,但该用户位于主机行中,因此我想使用IP地址更改它以解决安全问题,因此出现了此错误,因此我卡住。 问题答案: MySQL会阻止连接时
我想在云运行应用程序中连接云SQL。我使用了golang。这是关于sql连接设置的代码。 我在Cloud Run设置控制台设置了环境变量。delpoy Application后,Cloud Run控制台显示和
问题内容: 查询1打开15个连接,执行后将关闭它们。但是将永远不会执行,因为它包含等待自由连接的内容。 如何解决这个问题呢? 问题答案: 你有一个僵局。在最坏的情况下,您有15个goroutine持有15个数据库连接,而所有这15个goroutine都需要一个新的连接才能继续。但是要获得新的连接,就必须前进并释放一个连接:死锁。 链接的维基百科文章详细介绍了防止死锁的方法。例如,代码执行仅在拥有需
问题内容: 我使用python连接到mysql数据库 。我编写的程序需要花费大量时间才能完全执行,即大约需要10个小时。实际上,我正在尝试从语料库中读取不同的词。读取完成后,出现超时错误。 我检查了Mysql默认超时是: 如何更改默认超时? 问题答案: 做: 参数含义(取自Navigator中的MySQL Workbench:实例>选项文件>选项卡“网络”>“超时设置”部分) connect_ti
rank ▲ ✰ vote url 80 336 196 470 url 如何连接MySQL? 在python程序里如何链接MySQL数据库? 连接MYSQL需要3步 1 安装 你必须先安装MySQL驱动.和PHP不一样,Python只默认安装了SQLite的驱动.最常用的包是MySQLdb但是用easy_install安装很困难. 对于Window用户,你可以获取MySQLdb的exe. 对于L