我知道我可以在psql中使用SHOW WORK_MEM;
来查看当前使用的连接的值。但其他连接怎么样?我有一个应用程序打开许多连接,并根据上下文动态更改WORK_MEM
。我想监控这些WORK_MEM
更改以确保它们正在应用。
换句话说,我想"调整" pg_stat_activity
还包括WORK_MEM
或任何其他会话参数。我查了pg_top
,它没有包含这样的选项。
也许这篇关于使用this one的perl扩展名的EBD帖子可能被修改为在每个活动套接字上执行SHOW WORK_MEM
?如果是这样,任何人都可以提供一个例子吗?
我在Ubuntu 14.04上使用9.5.6以防万一。
答案 0 :(得分:1)
您可以在操作系统级别使用调试器进入该过程。
我将展示如何在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
您不希望在生产系统上执行此操作,因为在您调试后端时会阻止后端。