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 的处理看看详细的原因

参考资料

https://github.com/brettwooldridge/HikariCP
https://github.com/alibaba/druid

原文地址:https://www.cnblogs.com/rongfengliang/p/13814203.html