PostgreSQL关闭JDBC客户端链接无法彻底关闭服务端后台的查询请求-问答-阿里云开发者社区-阿里云

开发者社区> pg-learner> 正文

PostgreSQL关闭JDBC客户端链接无法彻底关闭服务端后台的查询请求

2016-04-25 13:39:34 3245 2

PG 9.3.4
JDBC: postgresql-9.3-1101.jdbc3.jar

jdbc客户端有两个线程,
A线程负责执行sql,
B线程负责清理超时的JDBC连接Connection

现在由于A线程执行了一个非常耗时的查询, 执行时间很长。
B线程检测超时后,执行Connection.close()接口, 关闭该连接。

但是我在数据库后台发现, 与jdbc客户端的socket链接已经关闭(为close_wait状态),但是那个被关闭的查询还在执行。

请问有什么方法可以将查询彻底关闭? 在jdbc客户端能否彻底关闭这个查询?

取消 提交回答
全部回答(2)
  • 德哥
    2019-07-17 18:47:25
    已采纳

    HI, 可以执行select pg_terminate_backend(pid)来关闭这个连接。
    或者执行pg_cancel_backend(pid)来退出PID的当前查询。

    0 0
  • pg-learner
    2019-07-17 18:47:25

    找到方法了, 可以直接在客户端管理这类异常/超时的查询。

    1、直接从客户端获取当前连接的进程id
    客户端新建jdbc连接conn时,通过执行以下sql获取该链接的后台进程pid:
    select procpid, start, S.client_host, S.client_port, now() - start as lap, current_query
    from
    (

     select backendid, pg_stat_get_backend_pid(S.backendid) as procpid, 
            pg_stat_get_backend_activity_start(S.backendid) as start,
            pg_stat_get_backend_client_addr(S.backendid) as client_host,
            pg_stat_get_backend_client_port(S.backendid) as client_port,
            pg_stat_get_backend_activity(S.backendid) as current_query
     from
            (select pg_stat_get_backend_idset() as backendid) as S

    ) as S,
    ( select inet_client_addr() as client_host, inet_client_port() as client_port ) as client
    where client.client_host = S.client_host and client.client_port = S.client_port;

    2、客户端连接池管理线程记录conn<->pid的对应关系

    3、当客户端发现该连接conn异常/超时后,结合digoal回答的关闭查询pid的方法,将该pid上的查询关闭。
    pg_cancel_backend(pid)

    0 0
添加回答
相关问答

17

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 969761浏览量 回答数 17

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 223009浏览量 回答数 162

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157089浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 333883浏览量 回答数 8

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 292299浏览量 回答数 110

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 643146浏览量 回答数 18

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 256876浏览量 回答数 38

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 192343浏览量 回答数 21

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302610浏览量 回答数 249

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 204011浏览量 回答数 2
+关注
0
文章
2
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载