spring中配置dataSource时,用的org.apache.commons.dbcp.BasicDataSource
以下几个属性大家一般填多少?<property name="maxActive" value="50" />
<property name="maxIdle" value="10" />
<property name="maxWait" value="1000" />
<property name="defaultAutoCommit" value="true" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="60" />上面是我填的数,主要是maxActive和maxIdle应该填多少,我不清楚,请大家指教。项目同时访问的人数在千以下,但有频繁对数据库的操作:查询数据库取得文件位置,移动文件,修改数据库中文件位置,大约每半小时有几千次。目前我的问题是:多数情况下,“查询数据库取得文件位置,移动文件,修改数据库中文件位置”用时不到1秒,但偶尔会出现,查询数据库取得文件位置,等待4秒左右,移动文件,修改数据库中文件位置,我分析是数据库连接不够用了,但不明白原因,猜测是不是datasource参数配错了,大家指教

解决方案 »

  1.   

    建议你看看数据库的监控工具,特别是数据库连接部分,不要自己猜,要根据实际情况调整。如果真的并发很高
    <property name="maxActive" value="50" /> 
    这个有点小了。因为你的事务速度一点都不快,1秒钟已经算很长了的。maxIdle 是闲暇时,没事干的连接数,用来应付高峰的。这个一般10个已经可以了。
      

  2.   

    我没描述好,不是一秒一个周期,一秒可以有4,5个周期,但之后就要等4秒,平均一秒一个周期maxActive设的很大会有什么影响吗?我不太明白这个值和什么有关,是和数据库中看到的session数相关吗?
      

  3.   

    基本上maxActive和maxIdle成2被关系,
    maxActive觉得于你的服务器好坏
      

  4.   

    是呀,我的使用情况我已经描述了呀项目同时访问的人数在千以下,但有频繁对数据库的操作:查询数据库取得文件位置,移动文件,修改数据库中文件位置,大约每半小时有几千次。 maxActive配大了会有什么害处?影响其它项目访问这个数据库?
      

  5.   

    我也想问这个问题。
    我的配置是这样的maxWait="10000" maxIdle="20" maxActive="20"我也担心不够用,问了经理,经理考虑到现在数据库的负荷已经很大了,所以没让我再改的大些。
    项目就快上线了,不晓得会不会出什么问题。哎...