遇到异常连接时,需要将对应连接杀掉,可能是连接占用了过多CPU或是IO,影响了业务,或是时间过长的空闲事务.

pg对于杀掉连接提供了专门的命令,一般情况下使用pg_cancel_backend就可以,不过操作取消不掉,可以使用pg_terminate_backend,如果pg_terminate_backend命令,仍然无法将连接杀掉,此时可以使用tcpkill,将连接的网络通信连接直接杀掉。

有时候,出现使用pg_terminate_backend也杀不掉的连接,通常是网络的问题,诸如misrouted packets,retransmissions,blocked sockets,timeouts,stalls此类的网络问题,都在等待客户端和pg通信的中断。

有时候网络的socket会处于这种状态:当pg做写操作时,被中断了。

在这种状态中,pg等待着来自客户端的回复,来确认客户端已收到数据,或是经由操作系统将该网络连接标记为损坏的,中断的。如果这些没有发生,那么pg就会一直等待直到收到客户端中断的命令。

此时可以使用tcpkill中断网络连接,然后操作系统就会关闭network socket,这样pg的连接也就自动退出了。

命令如下:

tcpkill -i eth0 -9 port client_port

-i: 指定数据库使用的是哪个network interface

client_port: 连接数据库连接的客户端端口

执行后,输出下面的信息后,可确认执行完成:

[root@pg2 ~]# tcpkill -i eth0 -9 port 60988
tcpkill: listening on eth0 [port 60988]
172.16.3.94:60988 > 172.16.3.95:1921: R 1241262920:1241262920(0) win 0
172.16.3.94:60988 > 172.16.3.95:1921: R 1241263157:1241263157(0) win 0
172.16.3.94:60988 > 172.16.3.95:1921: R 1241263631:1241263631(0) win 0
172.16.3.94:60988 > 172.16.3.95:1921: R 1241264342:1241264342(0) win 0
172.16.3.94:60988 > 172.16.3.95:1921: R 1241265290:1241265290(0) win 0
172.16.3.94:60988 > 172.16.3.95:1921: R 1241266475:1241266475(0) win 0
172.16.3.94:60988 > 172.16.3.95:1921: R 1241267897:1241267897(0) win 0
172.16.3.94:60988 > 172.16.3.95:1921: R 1241269556:1241269556(0) win 0
172.16.3.94:60988 > 172.16.3.95:1921: R 1241271452:1241271452(0) win 0
172.16.3.95:1921 > 172.16.3.94:60988: R 4254183996:4254183996(0) win 0
172.16.3.95:1921 > 172.16.3.94:60988: R 4254184253:4254184253(0) win 0
172.16.3.95:1921 > 172.16.3.94:60988: R 4254184767:4254184767(0) win 0
172.16.3.95:1921 > 172.16.3.94:60988: R 4254185538:4254185538(0) win 0
172.16.3.95:1921 > 172.16.3.94:60988: R 4254186566:4254186566(0) win 0
172.16.3.95:1921 > 172.16.3.94:60988: R 4254187851:4254187851(0) win 0

这个命令执行完成,有时可能需要几分钟,所以要耐心等待一下。

tcpkill命令是网络嗅探工具包dsniff中的一个工具,如果要使用tcpkill,要先安装好dsniff。

使用源码安装不太容易,常报错,推荐使用yum安装,这里使用的是阿里云的yum源。

这个文件的安装走的是epel.repo部分。

 wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

pg数据库杀掉连接的更多相关文章

  1. JPA连接PG数据库时间类型查询报错的修改

    PG数据库中的时间格式规范: https://blog.csdn.net/sky_limitless/article/details/79527665 to_data 转换为 普通的时间格式 to_t ...

  2. oracle杀掉连接

    相关sql --查看当前连接 select count(*) from v$process --数据库允许的最大连接数 select value from v$parameter where name ...

  3. T-SQL 关闭数据库所有连接

    原文引用自: http://www.cnblogs.com/kissazi2/p/3462202.html 下面给出一种删除数据库活动连接的方式.将下面代码段中的"--修改一下"处 ...

  4. php判断数据库是否连接成功的测试例子

    php判断数据库是否连接成功的测试例子 如果出现数据库配置不正确的错误,请看php与mysql的配置教程: win7系统下如何配置php-Apache-mysql环境 http://www.cnblo ...

  5. java中与数据库的连接

    package unitl01; import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet; ...

  6. jsp与数据库的连接

    经过一段时间的学习与上网查资料,我已经成功的用java语言连接上了数据库, 本以为同理jsp跟数据库的连接肯定水到渠成的,但是在经过尝试很多次后我发现现实永远是骨感的,最终结果是花了一个下午的时间去建 ...

  7. 数据库最大连接池max pool size

    本文导读:Max Pool Size如果未设置则默认为100,理论最大值为32767.最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影 ...

  8. jsp_数据库的连接

    一.添加数据库以及表 在这里我们使用的是mysql数据库 二.配置数据库的驱动程序 将mysql的驱动程序复制到Tomcat目录下的lib目录中 注:在Tomcat中如果配置了新的jar包,则配置完成 ...

  9. [转]Hibernate不能自动建表解决办法及Hibernate不同数据库的连接及SQL方言

    最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且 ...

随机推荐

  1. OGG 跳过事务(转)

    http://blog.chinaunix.net/uid-26190993-id-3434074.html    在OGG运行过程中,通常会因为各种各样的原因导致容灾端的REPLICAT进程ABEN ...

  2. java分布式事务,及解决方案

    1.什么是分布式事务 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成 ...

  3. Visual Studio AI 离线模型训练(window 7)

    本篇博客用tensorflow训练自带的数据mnist,参考自博客. 背景: 搭建好AI环境:查看 window 7 64位 准备工作: 在搭建AI环境过程中下载的samples-for-ai不是最新 ...

  4. Software Defined Networking(Week 3, part 1)

    Control and Data Plane Seperation 课程地址 Overview 今天正式地学习一个控制与数据平面分离.学习完本节,应该要掌握何为控制和数据平面,了解它们的功能以及好处, ...

  5. Alpha版本冲刺(七)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  6. 25_IO_第25天(Properties、序列化流、打印流、CommonsIO)_讲义

    今日内容介绍 1.Properties集合 2.序列化流与反序列化流 3.打印流 4.commons-IO 01Properties集合的特点 * A: Properties集合的特点 * a: Pr ...

  7. Effective Modern C++翻译(2)-条款1:明白模板类型推导

    第一章 类型推导 C++98有一套单一的类型推导的规则:用来推导函数模板,C++11轻微的修改了这些规则并且增加了两个,一个用于auto,一个用于decltype,接着C++14扩展了auto和dec ...

  8. vue-cli 安装时 npm 报错 errno -4048

    如何解决vue-cli 安装时  npm 报错 errno -4048 第一种解决方法:以管理身份运行cmd.exe 第二种解决办法:在dos窗口输入命令  npm cache clean  --fo ...

  9. 每秒更新时间 v-text的应用 (解决闪现{}问题)

    有闪现<div id="app"> {{date}}</div> 无闪现<div id="app" v-text:date=&qu ...

  10. Java容器深入浅出之HashSet、TreeSet和EnumSet

    Java集合中的Set接口,定义的是一类无顺序的.不可重复的对象集合.如果尝试添加相同的元素,add()方法会返回false,同时添加失败.Set接口包括3个主要的实现类:HashSet.TreeSe ...