gpt4 book ai didi

java - Hikari DB 连接最大池理解和调优

转载 作者:行者123 更新时间:2023-11-29 13:43:51 27 4
gpt4 key购买 nike

我想了解更多关于使用 Hikari 处理连接池的信息。

我面临的问题是连接将达到最大值,即 250,然后回到 10。有两件事我想知道/调整

  1. 为什么连接数达到最大值然后又回到 10?如何检查后台发生了什么?
  2. 如何让连接更稳定?

场景如下

  1. 运行 100 个从 soap-ui 并发调用应用程序服务器的线程 30 分钟
  2. 每个线程插入4张表,退出事务作用域时作为事务提交
  3. 运行 PostgreSQL 数据库
  4. 当连接池达到最大值时,插入会变慢。

查看所附图片。它是运行时的 Hikari Mbean。 Activity 连接的较深颜色表示它已达到最大值。较浅的绿色表示 Activity 连接池回落到 10。

enter image description here

这些是数据库设置:

<Resource name="jdbc/maxpool" auth="Container"
factory="com.zaxxer.hikari.HikariJNDIFactory"
type="javax.sql.DataSource"
poolName="ah pool"
idleTimeout="0"
registerMbeans="true"
maximumPoolSize="250"
maxLifetime="3000"
minimumIdle="5"
leakDetectionThreshold="90000"
dataSourceClassName="org.postgresql.ds.PGSimpleDataSource"
dataSource.url="jdbc:postgresql://10.1.1.1:5444/xxxx"
dataSource.user="ereport"
dataSource.password="zzzz"/>


#hibernate.hbm2ddl.auto=create
#hibernate.generate_statistics=true
#hibernate.cache.use_structured_entries=true
#hibernate.ejb.naming_strategy=my.mimos.jpa.naming.CustomImprovedNamingStrategy
javax.persistence.lock.timeout=5000
hibernate.id.new_generator_mappings=true
hibernate.id.optimizer.pooled.prefer_lo=true
hibernate.default_batch_fetch_size=20
hibernate.jdbc.fetch_size=50
hibernate.jdbc.batch_size=60
hibernate.jdbc.lob.non_contextual_creation=true
hibernate.order_inserts=true
#hibernate.connection.release_mode=after_statement
## uncomment the following 2 properties if batch update is required
#hibernate.order_updates=true
#hibernate.jdbc.batch_versioned_data=true

# Hibernate Envers (audit trail) properties
## There are 2 strategies: DefaultAuditStrategy and ValidityAuditStrategy
## ValidityAuditStrategy will store both the start revision and the end revision instead of storing start revision only
org.hibernate.envers.audit_strategy=org.hibernate.envers.strategy.DefaultAuditStrategy
org.hibernate.envers.audit_table_suffix=_h
org.hibernate.envers.do_not_audit_optimistic_locking_field=false
"efamily-persistence.properties" 40L, 2039C

最佳答案

为了调试这个问题,我发现一个 SQL 命令非常有用。问题是因为一些表被锁定了。当插入很慢时运行这个,然后可以得到一些问题所在的线索。

从 pg_stat_activity 选择 *

关于java - Hikari DB 连接最大池理解和调优,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51483686/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com