1. 程式人生 > 實用技巧 >jdbc連線池工具與pg fdw連線的問題

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