我的Openshift在线墨盒上有Postgres 9.2。使用Pgadmin3,我已经启用(通过勾选方框)postgresql.conf的autovuum设置。但是,autovacuum似乎没有运行。
这就是我所拥有的:
ps -ef | grep -i vacuum
没有显示自动真空过程。
使用psql控制台show autovacuum
表示其值为ON
使用psql控制台,SELECT schemaname, relname, last_vacuum, last_autovacuum from FROM pg_stat_user_tables;
在last_vacuum和last_autovacuum列中没有给出任何值,即使我使用pgadmin3进行了手动真空维护功能。
pgAdminIII中db的属性选项卡显示&AUTHACUUM值未运行'
我想念什么?
EDIT
当我试图在服务器上找到文件时,我也无法访问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
虽然在postgresql.conf中已将track_counts
设置为on
很抱歉这么愚蠢,但是非常感谢任何帮助或指示。 提前谢谢。
答案 0 :(得分:4)
我遇到了类似的问题,并在this discussion中找到了有用的提示:
...对于某些疯狂的原因,openshit禁用了localhost,而autovacuum只连接到localhost,我想它们是不是有意义,他们不想尝试真空远程数据库......但是openhit打破了autovacuum。
我找到的一个解决方案(我可能会使用)是手动添加强制真空的cronjob。 here是一个看起来很有前途的批处理脚本,但要注意强制真空可能涉及的副作用(当然,取决于你的app)。
答案 1 :(得分:0)
修补postgres以使用OPENSHIFT_PG_HOST
环境变量而不是localhost
似乎可以解决问题:pgstat.patch。