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

Spring引导连接在docker容器中几分钟后重置

长孙文栋
2023-03-14

警告1--[nio-8080-exec-2]O.H.Engine.jdbc.spi.sqlExceptionHelper:SQL错误:0,SQLState:08S01
错误1--[nio-8080-exec-2]O.H.Engine.jdbc.spi.sqlExceptionHelper:I/O错误:连接重置
错误1--[nio-8080-exec-2]O.A.C.C.C.C.[.[.[/].[dispatcherServlet]:servlet.servlet()在路径[]的上下文中出现异常[请求处理失败;嵌套异常是Sted异常是org.hibernate.exception.jdbcConnectionException:无法提取ResultSet]与根原因

java.net.socketException:在java.net.socketinputstream.read(socketinputstream.java:209)~[na:1.8.0_111-internal]在java.net.socketinputstream.read(socketinputhtml" target="_blank">stream.java:141)~[na:1.8.0_111-internal]在

到数据库的连接一直可用。奇怪的是,只有当我用Docker运行我的项目时,才会抛出这个错误。如果我用eclipse&node.js运行它,就不会出现错误。我唯一注意到的是,在我登录并空闲几分钟后,当我试图做某事时,我会自动注销。我不知道这是否与性高潮的错误有任何联系。

Application.Properties

spring.datasource.url=databaseURL
spring.datasource.username=SQLusername
spring.datasource.password=Password
spring.datasource.driver-class-name=net.sourceforge.jtds.jdbc.Driver
spring.datasource.initialSize=100
spring.datasource.minIdle=10

spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

spring.datasource.tomcat.max-active=250
spring.datasource.tomcat.max-wait=30000
spring.datasource.test-on-borrow=true
spring.datasource.test-while-idle=true
spring.datasource.minEvictableIdleTimeMillis=21600000
spring.datasource.timeBetweenEvictionRunsMillis=43200000


spring.datasource.connection-test-query=SELECT 1
spring.datasource.validationQuery=SELECT 1

我很高兴每一个能帮助解决这个问题的建议。

共有1个答案

甘西岭
2023-03-14

几个月前我也有同样的问题!发生这种情况是因为jvm没有足够的内存来接受这个请求!

这个错误是断断续续的,很难找到你的根本原因!

尝试这样做:在Dockerfile中添加一些标志来解决它

ENTRYPOINT ["java","-XX:+TieredCompilation","-XX:TieredStopAtLevel=1", "-jar","yourJar.jar"]
 类似资料:
  • 几分钟后,出现此错误。当我执行另一个查询时,它工作正常。 这是错误: 这是我的配置文件:

  • 我的数据库连接是用下面的类处理的: 这是我的spring boot控制器 下面是我的dockerfile: 我读了这里和这里提到的解决方案。也阅读了一些教程,但我无法将这些解决方案中的任何一个适合我的代码。在我的代码中,我应该在哪里更改?

  • 是否可以配置WebLogic的JDBC连接池,以便在经过一定时间后重置已建立的连接,即使该连接处于活动状态?

  • 主要内容:网络端口映射,Docker 容器互联,配置 DNS前面我们实现了通过网络端口来访问运行在 docker 容器内的服务。 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。 下面我们来实现通过端口连接到一个 docker 容器。 网络端口映射 我们创建了一个 python 应用的容器。 另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1。 我们使用 -P 绑定端口号,使用 dock

  • 我拉出了mysql docker映像,并用命令运行容器: 此时,springBoot在本地工作。它与MySQL连接: 现在,我希望springBoot应用程序也在单独的docker容器上,在同一服务器上。为此,我使用了DockerFile: 同样,它无法连接到数据库: