【发布时间】:2014-07-28 04:02:09
【问题描述】:
仅供参考;这不需要答案。
我在负载很重的 Postgres 服务器上工作,并发出了挂起的 GRANT 命令。它没有被任何其他命令阻止。 我有几个打开的连接,并且能够使用普通的 pg_cancel_backend (SIGTERM) 命令杀死几个进程,但是我的 GRANT 命令没有响应该命令或 pg_terminate_backend (SIGINT)。我终于尝试了“kill -9 (pid)” (SIGKILL) 并且服务器崩溃了。
向数据库服务器进程或 postmaster 发出 SIGKILL 可能会导致崩溃——这是有据可查的。对子进程运行 SIGKILL 可能也使数据库崩溃。
【问题讨论】:
-
GRANT没有任何阻塞锁当然不应该“挂起”。你如何确定它不是在等待锁?针对pg_stat_activity/pg_locks的查询是什么? -
kill -KILL或kill -9是个坏习惯,仅供初学者使用。顺便说一句:也许你忘了在GRANT ... TO ...后面加分号?
标签: postgresql kill sigkill