6

我的 Openshift Online 墨盒上有 Postgres 9.2。使用 Pgadmin3,我已启用(通过勾选框)postgresql.conf 的 autovuum 设置。但是,autovacuum 似乎没有运行。

这是我所拥有的:

  1. ps -ef | grep -i vacuum 没有显示自动真空过程。

  2. 使用 psql 控制台,show autovacuum表示其值为 ON

  3. 使用 psql 控制台,SELECT schemaname, relname, last_vacuum, last_autovacuum from FROM pg_stat_user_tables;在 last_vacuum 和 last_autovacuum 列中没有给出任何值,即使我使用 pgadmin3 通过维护功能进行了手动清理。

  4. pgAdminIII 中 db 上的属性选项卡显示 AUTOVACUUM 值为“未运行”

我想念什么?

编辑
当试图在服务器上查找文件时,我也无法访问 Openshift Online 上的 postgresql.conf - 希望手动编辑文件而不是使用 pgAdminIII。
-- 发现这个https://www.openshift.com/forums/openshift/how-do-i-set-maxpreparedtransactions-on-my-postgresql-cartridge 我现在可以查看/编辑我的 postgresql.conf。显然 autovacuum 已经打开,因此 conf 具有正确的设置。

pg_ctl restart -m fast 我得到问题时

LOG:  could not bind socket for statistics collector: Permission denied 
LOG:  trying another address for the statistics collector 
LOG:  could not bind socket for statistics collector: Permission denied 
LOG: trying another address for the statistics collector 
LOG:  could not bind socket for statistics collector: Cannot assign requested address LOG:  trying another address for the statistics collector 
LOG:  could not bind socket for statistics collector: Cannot assign requested address LOG:  disabling statistics collector for lack of working socket 
WARNING:  autovacuum not started because of misconfiguration 
HINT:  Enable the "track_counts" option. 
LOG:  database system was shut down at 2014-04-22 09:58:19 GMT 
LOG:  database system is ready to accept connections

虽然track_counts已经在 postgresql.conf 中设置为 on

很抱歉这么愚蠢,但非常感谢任何帮助或指示。先感谢您。

4

2 回答 2

4

我遇到了类似的问题,并在此讨论中找到了有用的提示:

...出于某种疯狂的原因,openshit 禁用了 localhost,并且 autovacuum 仅连接到 localhost,我想他们不想尝试清理远程数据库是有道理的...但是 openshit 会破坏 autovacuum。

我找到的一个解决方案(我可能会使用)是手动添加一个执行强制真空的 cronjob。是一个看起来很有前途的批处理脚本,但要小心强制真空可能涉及的副作用(当然取决于您的应用程序)。

于 2014-07-24T20:32:36.367 回答
0

修补 postgres 以使用OPENSHIFT_PG_HOST环境变量而不是localhost似乎可以解决问题:pgstat.patch

于 2016-12-31T19:46:51.177 回答