2014-04-22 8 views
6

У меня есть Postgres 9.2 на моем картридже Openshift Online. Используя Pgadmin3, я включил (пометив галочку) настройку autovuum для postgresql.conf. Однако автовакуум, похоже, не работает.Autovacuum не работает на Openshift Online Postgres картридж

Вот что у меня есть:

  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 говорит значение автовакуумной из «не работает»

Что мне не хватает?

EDIT
Я также не могу получить доступ к postgresql.conf на OpenShift онлайн, пытаясь найти файл на сервере - в надежде вручную отредактировать файл вместо использования 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

Извините за то, что так глупо, но любая помощь или указатели оценены. Спасибо заранее.

+0

Убедитесь, что у вас нет сеансов в состоянии ' в транзакции'. Они предотвратят автоматический вакуум от очистки старых значений. –

+0

Благодарим вас за быстрый ответ, но как я могу это проверить. Не совсем уверен, что я понимаю, что это за транзакция. Спасибо. – green

+0

В качестве суперпользователя: 'select * from pg_stat_activity' –

ответ

4

я столкнулся с подобным вопросом и нашел полезные подсказки в this discussion:

... по некоторым безумной причины openshit отключили локальный и автовакууминг подключается только на локальный, я предполагаю, что это имеет смысл что они не захотят пылесосить удаленный дБ ... но openshit ломает autovacuum.

Одно из решений, которое я нашел (и что я, вероятно, буду использовать), - это вручную добавить cronjob, который делает принудительный вакуум. here - это пакетный скрипт, который выглядит многообещающим, но будьте осторожны с побочными эффектами, которые могут быть связаны с принудительным вакуумом (в зависимости от вашего приложения, конечно).

+0

у меня такая же проблема, но она не решает проблему вопрос –

0

Патч postgres для использования переменной окружения OPENSHIFT_PG_HOST вместо localhost, похоже, решает проблему: pgstat.patch.

 Смежные вопросы

  • Нет связанных вопросов^_^