java - PostgreSQL 迁移后系统累积繁忙。和以前一样的Tomcat7和系统文件
问题描述
我使用新版本的 Postgres 将系统迁移到其他机器。(8.2.23到9.4.5)(新版本测试了很久,解决了一些兼容性错误)。该应用程序具有相同的文件(相同的服务器:tomcat7),并且用户正在使用他们之前执行的相同任务。
我在“psi-probe 3.0”中监控“数据源”。
系统快速跟踪活动连接的限制。(很多忙)。例如,现在我有 15 个 BUSY 没有在服务器状态 (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”之后删除 BUSY。(它没有发生)。
迁移后我注意到一些奇怪的情况:
- 当我停止 tomcat 时,“PostgresSQL JDBC 驱动程序”的进程并没有像以前那样完成。
- 有时,“事务中的空闲”进程会通过一个简单的查询持续存在:“SELECT nextval('sequence_seq01') asequential”。
- BUSY 也出现没有任何进程“idle in trasaction”。
很久以前,我遇到了累积 BUSY 的问题,但它与服务器状态 (pgadmin) 中显示的“事务中的空闲”进程是对称的。我修复了未关闭连接的代码。(但现在不是这样)
解决方案
推荐阅读
- jmeter - 如何从jmeter响应中提取和存储值并存储inn csv?
- amazon-web-services - 是否可以获取容器 ID 或 ecs fargate 的名称?
- sql - 基于单个查询字段的 Oracle 条件列
- amazon-web-services - 无法从 powershell 获取存在 ec2 实例的图像 ID
- ios - 关闭 Viewcontroller 时传递数据
- entity-framework - GenericRepository 模式没有错误逐行执行但抛出 ObjectContext 实例已在插入数据时以正常模式处理
- .htaccess - .htaccess mod_rewrite 简化规则:我可以将多个规则简化为一个规则吗?
- c# - 在 C# 中将所有视频帧提取为图像的最快方法是什么?
- electron - Electron app mac 应用商店要求(沙盒?)
- jquery - 两个 CSS 选项卡下的动画线