jdbc连接池工具与pg fdw连接的问题
最近一个项目使用了postgres 的fdw 进行跨库的业务数查询分析,直接使用pg 的client 工具以及直接使用pg的datasource
实现PGSimpleDataSource测试都是没有问题的
- pg fdw 使用参考
因为项目默认使用了alibaba 的druid 连接池工具发现没请求几次就会出现
问题,现象是后端pg服务就挂了,因为基于容器部署,开启了restart always 选项,会自动重启,刚开始以为是alibaba druid
的问题,后边尝试了下大名鼎鼎的HikariCP发现问题依旧
- 排查
在发现两个大名鼎鼎的连接池工具都有问题之后,发现会不会就是因为fdw的问题引起的,验证方法:
手工创建表然后测试各种连接池工具(发现没有问题)
同时查看关于调用的一些日志,发现一些特殊的地方,部分sql 转换有异常出现(使用连接池工具),当出现问题的时候
pg server会有如下问题
00000: reaping dead processes
•[36mfdw-db_1 |•[0m 2020-10-14 09:29:11.411 CST [1] 位置: reaper, postmaster.c:2899
•[36mfdw-db_1 |•[0m 2020-10-14 09:29:11.411 CST [1] 调试: 00000: 服务器进程 (PID 36) 被信号 11 中断: 段错误
- 解决方法
从排查问题的解决,应该就是pg fdw sql 处理上与数据库连接池工具有差异,sql 执行计划,sql 预处理上 ,所以
暂时的解决方法是直接基于pg 提供的datasouce 进行数据操作,还得需要自己看看sql 的处理看看详细的原因