Autovacuum не работает на картридже Openshift Online Postgres
У меня Postgres 9.2 на моем картридже Openshift Online. Используя Pgadmin3, я включил (установив флажок) параметр автоматического вакуума для postgresql.conf. Тем не менее, автовакуум, похоже, не работает.
Вот что у меня есть:
ps -ef | grep -i vacuum
Автовакуумный процесс не показан.Используя консоль PSQL,
show autovacuum
говорит, что его значение включеноИспользуя консоль PSQL,
SELECT schemaname, relname, last_vacuum, last_autovacuum from FROM pg_stat_user_tables;
не дает значения в столбцах last_vacuum и last_autovacuum, хотя я сделал ручной вакуум через функцию Maintenance с помощью pgadmin3.Вкладка свойств на БД в pgAdminIII говорит, что значение AUTOVACUUM 'не работает'
Что мне не хватает?
РЕДАКТИРОВАТЬ
Я также не могу получить доступ к postgresql.conf в Openshift Online при попытке найти файл на сервере - в надежде отредактировать файл вручную вместо использования pgAdminIII.
- нашел это https://www.openshift.com/forums/openshift/how-do-i-set-maxpreparedtransactions-on-my-postgresql-cartridge
Теперь я могу просматривать / редактировать свой postgresql.conf. По всей видимости, автовакуум уже включен, поэтому настройка 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
Извините за глупость, но любая помощь или указатели очень ценятся. Заранее спасибо.
2 ответа
Я столкнулся с подобной проблемой и нашел полезный совет в этой дискуссии:
... по какой-то безумной причине openshit отключил localhost, а autovacuum подключается только к localhost, я думаю, что имеет смысл, что они не захотят пытаться очистить удаленную базу данных... но openshit нарушает autovacuum.
Одно решение, которое я нашел (и которое я, вероятно, буду использовать), состоит в том, чтобы вручную добавить cronjob, который создает принудительный вакуум. Вот пакетный скрипт, который выглядит многообещающе, но будьте осторожны с побочными эффектами, которые может вызвать принудительный вакуум (конечно, в зависимости от вашего приложения).
Исправление postgres для использования OPENSHIFT_PG_HOST
переменная среды вместо localhost
кажется, чтобы решить проблему: pgstat.patch.