gpt4 book ai didi

oracle - JVM 数据源调整 tomEE 连接池中的空闲数据库连接

转载 作者:行者123 更新时间:2023-11-28 23:29:09 24 4
gpt4 key购买 nike

我想弄清楚我的数据源定义是否是我们遇到的问题的根本原因。我们在 AWS 中的应用程序堆栈有几台 TomEE 机器在 ELB 后面一起运行。随机机器保留与数据库的空闲连接并且不终止。

我想知道我们可以做些什么来更好地建立我们的联系和收获联系。我们的应用程序确实有中等数量的请求/秒。

这是我们的 Tomee.xml 文件。

<?xml version="1.0" encoding="UTF-8"?>
<tomee>
<!-- see http://tomee.apache.org/containers-and-resources.html -->
<!-- Datasources for Prod -->
<Resource id="DBWPC" type="javax.sql.DataSource">
DataSourceCreator tomcat
JdbcDriver oracle.jdbc.OracleDriver
JdbcUrl jdbc:oracle:thin:@x.x.com:1521:service
UserName xxxxx
Password xxxx
jmxEnabled true
InitialSize 5
MaxActive 20
MaxIdle 20
MinIdle 0
MaxWait -1
ValidationQuery SELECT 1 FROM DUAL
PoolPreparedStatements true
MaxOpenPreparedStatements 0
TestWhileIdle true
timeBetweenEvictionRunsMillis 180000
JtaManaged true
</Resource>
<!-- Standard JMS Setup for NON-SERVER **** START **** -->
<Resource id="PrimaryJMSRA" type="ActiveMQResourceAdapter">
BrokerXmlConfig=
ServerUrl = tcp://x.x.com:61616
</Resource>
<Resource id="JmsConnectionFactory" type="javax.jms.ConnectionFactory">
ResourceAdapter = PrimaryJMSRA
</Resource>
<Container id="JmsMdbContainer" ctype="MESSAGE">
ResourceAdapter = PrimaryJMSRA
</Container>
<Container id="wpcStatelessContainer" type="STATELESS">
accessTimeout = 30 seconds
callbackThreads = 5
closeTimeout = 5 minutes
garbageCollection = false
idleTimeout = 0 minutes
maxAge = 0 hours
maxAgeOffset = -1
maxSize = 5000
minSize = 20
replaceAged = true
replaceFlushed = false
strictPooling = false
sweepInterval = 5 minutes
</Container>
<Container id="wpcSingletonContainer" type="SINGLETON">
accessTimeout = 30 seconds
</Container>

最佳答案

优化取决于很多可能的工作负载,因此这可能不是最终答案,而是一次尝试。新 session 被阻止/排队表明您没有足够的空间来汇集您的连接。如果您看到一开始要创建很多连接,则将 InitialSize 从 5 增加到大概 20。既然您说的是 200 个 session ,那么假设您有很多并发 session ,建议将 max active 设置为 100 或 150被安置。

尝试下面的示例设置(考虑到您需要高并发性),如果有帮助请告诉我:

  • testWhileIdle="真"
  • testOnBorrow="真"
  • testOnReturn="假"
  • validationQuery="SELECT 1"
  • validationInterval="30000"
  • timeBetweenEvictionRunsMillis="5000"
  • maxActive="100"
  • minIdle="10"
  • maxIdle="20"
  • maxWait="10000"
  • initialSize="20"
  • removeAbandonedTimeout="60"
  • removeAbandoned="true"
  • logAbandoned="真"
  • minEvictableIdleTimeMillis="30000"

为什么我建议这些设置?检查下面的链接: http://www.tomcatexpert.com/blog/2010/04/01/configuring-jdbc-pool-high-concurrency

关于oracle - JVM 数据源调整 tomEE 连接池中的空闲数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32938980/

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