当前位置: 首页 > 知识库问答 >
问题:

Spring在超时后抛出“错误SqlExceptionHelper:已关闭”

王昊
2023-03-14

我在服务器上托管了一个spring应用程序(Tomcat 8.5)。如果没有人使用它,它就会闲置。我已经知道,如果数据库处于空闲状态8小时(MySQL的默认超时),就会发生超时。正如在Spring Autoreconnect and Connection lost过夜帖子中提到的,我已经尝试了这里提供的解决方案。我尝试过配置应用程序。但这并不能解决问题。

(PS:除了Spring应用程序中的application.properties之外,我不会更改任何内容)。

共有2个答案

松翔
2023-03-14

如果问题没有解决,即使包括属性后,如application.properties,那么问题将被解决时,包括testOnBray, validationQuery在application-context.xml位于src/main/资源

<bean name="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${database.driver.classname}"/>
    <property name="url" value="${database.url}"/>
    <property name="username" value="${database.username}"/>
    <property name="password" value="${database.password}"/>
    <property name="initialSize" value="2"/>
    <property name="maxActive" value="50"/>
    <property name="maxIdle" value="5"/>
    <property name="maxWait" value="-1"/>
    <property name="removeAbandoned" value="true"/>
    <property name="removeAbandonedTimeout" value="600"/>
    <property name="logAbandoned" value="true"/>
    <property name="testOnBorrow" value="true" />
    <property name="validationQuery" value="SELECT 1" />        
</bean>

解决方案是从线程池中借用连接线程时,通过启用testOnBray并提供validationQuery来验证连接线程。

东弘扬
2023-03-14

如果这个

spring.datasource.testWhileIdle = true
spring.datasource.timeBetweenEvictionRunsMillis = 60000
spring.datasource.validationQuery = SELECT 1

或者这个

spring.datasource.testOnBorrow=true
spring.datasource.validationQuery=SELECT 1

没用也许试试这个

Post SpringBoot 1.4的名称已更改

他们为Spring支持的四个连接池定义了新的特定命名空间:tomcat、hikari、dbcp、dbcp2。

spring.datasource.tomcat.testOnBorrow=true
spring.datasource.tomcat.validationQuery=SELECT 1
 类似资料:
  • 我使用的是SpringBoot2.2。2.发布,version 在 超时失败统计(总计=30,活动=1,空闲=29,等待=163) 有29个空闲连接,仍然发生超时故障。

  • 我想从intelliJ运行我的spring-boot应用程序,而不是使用终端,但它不允许,它只是抛出了一大堆错误,而当我从中的终端运行时,应用程序会按预期启动。 通过intelliJ(右上角的run按钮)运行时: 但当我去跑的时候: 在终端中,我的应用程序启动,我可以开始对服务器进行http调用。

  • 所以我一直在寻找12个小时,现在这个错误的解决方案,我在尝试安装Laravel框架的PHP。我发现了许多不同的帖子,但似乎没有一个工作。这里的问题,我通过所有的步骤得到Laravel在我的电脑,这是下载和安装作曲家到我的 /usr/local/bin/目录,然后运行这个命令: 我得到这个错误: 我已经删除并重新安装了php,我已经运行了一个脚本,查看是否安装了mcrypt,它是否运行正确,我已经尝

  • 编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答这个问题。 这样的问题。当添加注释@ spring boot application(exclude = { securityautoconfiguration . class })时,生成名称时出现错误,IDE会这样写:在此输入图像描述 会有什么问题呢?

  • 这是我的代码: 我同时从多个线程调用此函数。当我在一次运行中只调用它大约20~30次时,它工作得非常好。但当我在大约2分钟内(对同一个URL)调用它500~600次时,它会抛出 编辑 我尝试只创建一个实例,但它仍然会引发相同的异常

  • 我实现了自定义GatewayFilterFactory来实现自定义安全性。我观察到网关和远程服务器之间的连接突然关闭时出现间歇性问题。 Spring cloud gateway吞咽异常并向客户端抛出500个内部服务器错误。 完全堆栈跟踪- 示例实现- 以下查询的任何建议- 如何确保netty将连接/握手错误转发到客户端,而不是抛出500个内部服务器错误? 如何重新建立关闭的连接?