標籤:autovacuum異常
最近線上Postgresql資料庫中其中幾台伺服器更新時變得非常慢,經過排查和對比,發現時因為autovacuum未啟動導致的。
1、使用表pg_stat_all_tables查看autovacuum執行記錄
select schemaname,relname,last_autovacuum,last_autoanalyze from pg_stat_all_tables;
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/47/61/wKioL1P5_8qwmN2gAAEZ9Q0KloA474.jpg" title="3.png" alt="wKioL1P5_8qwmN2gAAEZ9Q0KloA474.jpg" />如,發現所有的對象對應的analyze及vacuum執行記錄均為空白。
2、使用ps -ef | grep postgres發現postgres對應的analyze及vacuum進程均未啟動
3、查看postgres.conf檔案及show all查看autovacuum選項設定正常
autovacuum = on
4、查看文檔autovacuum啟動的三個條件如下:
a) 設定 autovacuum = on
b) 設定 track_counts = on
c) 設定 /etc/hosts #能 ping通 localhost(該條件之前不滿足)
原來是這個原因導致的,最開始的時候因為項目特殊原因/etc/hosts檔案中為設定localhost。
後來添加localhosts以後未重啟Postgresql,導致track_counts在沒有設定localhosts的情況下預設為off狀態,而analyze及vacuum也無法啟動,從而資料庫對應表的統計資訊及vacuum均未能成功執行。
5、找到原因以後,安排維護時間重啟資料庫以後,資料庫恢複正常
本文出自 “composer” 部落格,請務必保留此出處http://zuoqujia.blog.51cto.com/9151800/1544236
Postgresql資料庫autovacuum進程啟動失敗