如何显示外部PostgreSQL连接的WORK_MEM?[英] How to show WORK_MEM of external PostgreSQL connections?

本文是小编为大家收集整理的关于如何显示外部PostgreSQL连接的WORK_MEM?的处理方法,想解了如何显示外部PostgreSQL连接的WORK_MEM?的问题怎么解决?如何显示外部PostgreSQL连接的WORK_MEM?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我知道我可以在 psql 中使用 SHOW WORK_MEM; 来查看当前使用的连接的值.但是其他连接呢?我有一个应用程序可以打开许多连接并根据上下文动态更改 WORK_MEM .我想监控这些 WORK_MEM 更改以确保它们被应用.

换句话说,我想"调整" pg_stat_activity 以包括 WORK_MEM 或任何其他会话参数.我检查了pg_top,它不包含这样的选项.

也许这个 EBD 帖子是关于使用 perl 扩展来 显示连接 CPU 和 RAM 使用情况 可以修改为在每个活动套接字上执行 SHOW WORK_MEM 吗?如果可以,谁能举个例子?

我在 Ubuntu 14.04 上使用 9.5.6,以防万一.

推荐答案

您可以在操作系统级别使用调试器中断进程.

我将展示如何在 Linux 上做到这一点:

$ psql "dbname=test options='-c work_mem=256MB' application_name=test"
psql (9.6.1)
Type "help" for help.

test=>  SELECT pg_backend_pid();
 pg_backend_pid
----------------
          21089
(1 row)

现在我可以闯入服务器机器上的进程:

$ gdb /path/to/postgres-9.6.1/bin/postgres 21089
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-90.el6)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
...
(gdb) print work_mem
$1 = 262144
(gdb) detach
Detaching from program: /path/to/postgres-9.6.1/bin/postgres, process 21089
(gdb) quit

您不希望在生产系统上执行此操作,因为在您调试时后端会被阻塞.

本文地址:https://www.itbaoku.cn/post/1764075.html