首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >杀死-9a postgres进程

杀死-9a postgres进程
EN

Server Fault用户
提问于 2012-08-07 17:09:18
回答 2查看 24.1K关注 0票数 29

postgres选择查询在我们的DB服务器上失去控制,开始消耗大量内存和交换,直到服务器耗尽内存。我通过ps aux | grep postgres找到了特定的进程,并运行了kill -9 pid。这就扼杀了进程,内存如出一辙地释放了。系统的其余部分和postgres查询似乎没有受到影响。此服务器正在SLES 9 SP4上运行postgres 9.1.3。

然而,我们的一位开发人员斥责我用kill -9杀死postgres进程,说它会毁掉整个postgres服务。事实上,事实并非如此。我以前做过很多次,也没有见过任何副作用。

尽管如此,经过进一步阅读,看起来没有标志的kill pid似乎是杀死失控postgres进程的首选方式,但对于postgres社区的其他用户来说,听起来postgres已经“变得更好”了,因此在单个查询进程/线程上的kill -9不再是死刑判决。

有人能告诉我如何正确地杀死一个失控的postgres过程,以及这些天来使用kill -9对Postgres来说是多么的灾难性(或良性)吗?谢谢你的洞察力。

EN

回答 2

Server Fault用户

发布于 2012-08-07 17:43:01

I found the particular process via ps aux | grep postgres and ran kill -9 pid.

不是的!坏的!离后端远点!

说真的--不要像那样杀死Postgres后端--可怕的事情可能会发生(即使是7.x天以来所做的所有稳定性增强),这些都会破坏整个DB,而您的开发人员对此不屑一顾。

事实上,一种从Postgres内部得到祝福和认可的方法 --即使在Postgres手册中也是如此--所以post在解释它方面做得更好.

SELECT pg_cancel_backend(pid)

向指定的后端发送取消(SIGINT)信号,该后端取消当前运行的查询。

select pg_terminate_backend(pid)

向指定的后端发送终止(SIGTERM)信号,该后端取消查询并中止后端(删除其连接)。

后端ID可以从pg_stat_activity表(或ps)中获得。

票数 31
EN

Server Fault用户

发布于 2012-08-07 17:20:40

杀死PostgreSQL客户端进程应该可以。杀死PostgreSQL守护进程可能会受到责备。

由于SQL守护进程也有内部进程控件,因此首选的方法是先尝试使用该通道。

在PostgreSQL中停止运行SQL查询。从StackOverflow。

票数 8
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/415188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档