我使用新版本的Postgres将系统迁移到其他计算机。 (8.2.23至9.4.5)(我们长时间测试了新版本并解决了一些兼容性错误)。该应用程序具有相同的文件(相同的服务器:tomcat7),并且用户正在使用与之前执行的相同的任务。
我正在监视“ psi-probe 3.0”中的“数据源”。
系统迅速跟踪活动连接的限制。 (很多忙)。 现在,例如,我有15忙,服务器状态(pgadmin)中没有显示任何“交易空闲”进程。仅“空闲”进程。 (表示正常)。为了避免锁定系统,我输入了:maxActive =“ 200”。 (只是延迟直到达到极限)。
尝试解决我升级的JDBC驱动程序:“ postgresql-8.3-604.jdbc3”到“ postgresql-42.2.2.jre7”。 (没有解决)
在上下文中用于连接池控制的配置:
<Resource name="jdbc/emp1" auth="Container" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver" maxWait="10000" maxActive="200" maxIdle="5" removeAbandoned="true" removeAbandonedTimeout="1200" logAbandoned="true" validationQuery="SELECT 1" username="*" url="jdbc:postgresql://*:**/*" password="*"/>
在搜索解决方案之后,我添加了参数:(removeAbandoned,removeAbandonedTimeout和logAbandoned),以为该问题将在应用程序日志中跟踪,并且可能在“ removeAbandonedTimeout”之后将删除繁忙。 (这没有发生)。
迁移后我发现了一些奇怪的情况:
很久以前,我遇到了一个问题,那就是积累繁忙,但是它与服务器状态(pgadmin)中显示的带有“交易空闲”的进程是对称的。我修复了未关闭连接的代码。 (但现在并非如此)