postgresql 监视PG快速关闭

6tqwzwtp  于 2023-04-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(122)

我在docker容器中运行了一个PG。当我试图使用快速关机来停止PG时,有时它会卡住,需要很多时间。
有没有好的方法可以从容器外部跟踪快速关机的进度?我需要看看进展如何。
快速关机的文档:https://www.postgresql.org/docs/current/server-shutdown.html

SIGINT
This is the Fast Shutdown mode. The server disallows new connections and sends all existing server processes SIGTERM, which will cause them to abort their current transactions and exit promptly. It then waits for all server processes to exit and finally shuts down.

我需要跟踪所有现有服务器进程在收到SIGTERM时的进度。如果他们被卡住了,为什么他们被卡住了。
我一直在考虑捕获SIGINT信号并回显此信息,以便它可以显示在docker日志中。但我不想重新发明轮子,如果我能从其他地方得到这些信息。

hmmo2u0o

hmmo2u0o1#

您无法监视它,除非跟踪所有PostgreSQL进程。如果快速关闭需要很长时间,则其中一个服务器进程对关闭请求的响应速度一定很慢。您可以使用ps轻松地识别进程。您可以做的一件事是用调试器附加到它,看看它在做什么。
如果一个正常的PostgreSQL活动没有及时对中断做出React,那就是一个bug。然而,加载到PostgreSQL中的扩展也可能是问题,如果它们定义的函数最近没有检查中断。
要获得更多帮助,您应该使用调试器附加到挂起的进程,进行堆栈跟踪并将其添加到问题中。

相关问题