如果我有一个长时间运行的 Postgres 查询,并且常规的“kill [pid]”不起作用,并且 pg_cancel_backend 不起作用,我该怎么办?
Bri*_*les 11
http://www.postgresql.org/docs/current/static/server-shutdown.html
pg_cancel_backend 相当于向进程发送 SIGINT。
pg_terminate_backend 对于 SIGTERM 也是如此,但如果 pg_cancel_backend 不起作用,我不明白为什么 pg_terminate_backend 会。
如果您尝试过这些选项,则可以尝试 SIGQUIT。医生说,“只在紧急情况下才建议这样做。 ”
(如果你讨厌你的数据并希望它死掉,你可以使用 SIGKILL。但我不会。)
您可以kill直接使用或使用pg_ctl kill.
小智 9
除非您的目标是强行关闭整个服务器,否则您永远不应该杀死 -9 任何 postgres 进程。您可以使用以下命令终止任何不响应来自 shell 的 pg_cancel_backend() 调用的进程
kill <pid>
Run Code Online (Sandbox Code Playgroud)
即不是-9。请注意,我曾多次看到,由于进程挂起在某个循环中等待网络连接上的数据,因此即使这样也不起作用。如果我没记错的话,杀死客户端进程可以解决这个问题。
| 归档时间: |
|
| 查看次数: |
30428 次 |
| 最近记录: |