我在tomcat 6上使用tomcat pool。以下是我的资源定义:
<Resource name="jdbc/DBConnectionFactory"
auth="Container"
type="javax.sql.DataSource"
username="root"
password="root"
removeAbandoned="true"
removeAbandonedTimeout="600"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/sicad?autoReconnect=true"
minIdle="3"
maxActive="250"
testWhileIdle="true"
validationQuery="SELECT 1"
maxIdle="10"
timeBetweenEvictionRunsMillis="10000"
minEvictableIdleTimeMillis="10000"
maxWait="-1"
/>
现在,理想情况下,在进入250个连接后,应删除所有空闲连接,或者至少通过某种方式mysql不应该提供太多的连接错误。此外,请注意,如果我执行showprocesslist,几乎没有任何并发查询正在进行。所以我认为timeBetweenEvictionRunsMillis应该做的就是删除空闲连接并保持池活着。但是一旦设置了250个连接,mysql就会开始抛出太多的连接错误。我原以为tomcat池会删除池中的任何空闲连接以保持池大小合理。还要注意的是,并没有创造出这么多。
更糟糕的是,同样的配置适用于开发人员计算机和登台服务器+测试服务器,但不适用于产品服务器。所有机器都是彼此的克隆。我重新启动了机器,重新安装了mysql,但一切都是徒劳的。
答案 0 :(得分:0)
是在全局或应用程序级别配置了吗?查看Mark Thomas的4 Mistakes To Avoid On Apache Tomcat,了解如何将context.xml
置于错误的位置可以创建比您想要的更多的连接。长话短说:
context.xml
中配置池,则每个应用程序都会获得一个池context.xml
中配置池,则只能获得一个池答案 1 :(得分:0)
没有任何效果,最终放弃了硬件和相同的代码库,驱动程序和mysql安装工作。