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

光连接池已耗尽

郎灿
2023-03-14

我有使用hikari池创建连接池的Spring启动应用程序。我们正在使用postgres sql用于db。当我以低qps命中系统时,请求需要大约200毫秒来执行。当部署一个pod并且qps为15时,事情保持良好状态。但是一旦我将qps增加到20,请求就开始需要大约10秒来处理,连接池变空(java.sql.SQLTransientConntion异常:菲尼克斯-连接不可用,请求在30183毫秒后超时)。

我正在使用此配置。

spring.datasource.hikari.maximum-pool-size=200
spring.datasource.hikari.connectionTimeout=10000
spring.datasource.hikari.minimum-idle=50
spring.datasource.hikari.idle-timeout=0
spring.datasource.hikari.max-lifetime=30000
spring.datasource.TYPE=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.leak-detection-threshold=10000

pod cpu的使用率最大到30%,内存使用率也在控制范围内。我使用的是aws托管的post,它可以与db有10000个并行连接。有人能在这里帮我吗?

共有1个答案

白弘伟
2023-03-14

请注意,您的住宿名称错误:

spring.datasource.hikari.connection-timeout=5000

而不是:

spring.datasource.hikari.connectionTimeout=10000

来源:spring文档

 类似资料:
  • 在为了使用多线程而修改了一个服务方法之后,我发现如果不止一个用户多次尝试请求页面(并调用服务方法),服务器就会抛出“无法连接,池耗尽”异常。让我提供一个我的服务类的例子。 我已经在这个问题上挣扎了一个多星期,我找不到解决方案。我不太明白Grails如何与会话、连接和事务一起工作。我的猜测是跟随。当调用ConvertDocumentToJSON时,它从池中获取连接(4个用户,每个用户25个线程=10

  • 我在项目中使用ApacheTomcat JDBC连接池。我很困惑,因为在重负下,我一直看到以下错误: 我的期望是,使用池,新连接的请求将被保留在队列中,直到连接可用。相反,当池达到容量时,请求似乎会被拒绝。这种行为可以改变吗? 谢谢, 达尔 这是我的池配置:

  • 我在我的Spring开机应用程序中使用光Cp。 这是我的java配置文件:- 当我启动应用程序并发送第一个请求后,我得到了下面的日志。 几秒钟后,它立即将接下来的四个连接添加到空闲状态:- 我的问题是,我只发送了一个请求,为什么hikira增加了4个额外的连接,并且已经有一个空闲连接,为什么它不能重用同一个连接。 我已经为每个连接提供了最大提升时间条件,并且在通过后,连接仍处于空闲状态。 所以任何

  • 我有一个Spring启动,Hibernate使用java应用程序。我部署它在一个jetty webserver与多个实例.如果我有太多(大于10)很多实例我得到 许多连接(10x实例)显示为空闲 ps: 实例的Hikari跟踪日志: 设置 没有记录任何有趣的事情。我认为这看起来很有趣-连接不可用 有什么办法可以调试这个吗?我也在java 7上,所以hikari 2.4.7

  • 问题内容: 我在GlassFish上有一个Java-JSF Web应用程序,我想在其中使用连接池。因此,我创建了一个有范围的Bean,可与其他Bean的实例一起使用: 这样,连接池很快就会被填满。在“ db-related”视图中进行几次导航后,应用程序将停止以下操作: RAR5117:无法从连接池[mysql_testPool]获取/创建连接。原因:使用中的连接等于最大池大小和已过期的最大等待时

  • 我在应用程序中使用连接池(snaq.db.ConnectionPool)。连接池的初始化方式如下: 使用的DB池值是: 我的应用程序在某处泄漏连接(连接未被释放),因此连接池已耗尽。我现在已经修好了密码。 空闲超时后连接不应该关闭吗?如果这不是正确的假设,有没有办法关闭打开的空闲连接(仅通过java代码)?