Performance
postgres stats 收集器程序生成的 I/O 過多
我將 XenServer 與多個具有本地 postgres 數據庫的虛擬機一起使用。即使在所有應用程序都未使用且數據庫處於空閒狀態時,每個 vm 都會導致持續的儲存網路流量,從而降低 iSCSI 儲存設備的性能。
執行後,
iotop
我注意到 postgres stats 收集器程序不斷以大約 2 MByte/s 的速率寫入磁碟。然後我通過編輯禁用了統計資訊的收集
/etc/postgresql/8.4/main/postgresql.conf
:#------------------------------------------------------------------------------ # RUNTIME STATISTICS #------------------------------------------------------------------------------ # - Query/Index Statistics Collector - track_activities = off track_counts = off ...
正如http://www.postgresql.org/docs/8.4/static/runtime-config-statistics.htm中所建議的那樣。
這樣就消除了連續寫入,但是關閉統計跟踪有什麼缺點嗎?
還是我應該將 pg_stat_tmp 目錄放在 ramdisk 上以避免磁碟/網路流量?
該系統是最新的 Debian 6.0.7 (squeeze),帶有 postgres 8.4 和大約 20 個數據庫,大約 50 個表,總轉儲文件大小小於 100 MByte。
由於升級 PostgreSQL 不是一個選項,我嘗試將 pg_stat_tmp 目錄放在 tmpfs 文件系統上,這帶來了顯著的性能改進。我現在在幾十個系統上執行了幾個月,沒有任何明顯的缺點。
為此,只需在 /etc/fstab 文件中使用 tmpfs 掛載 pg_stat_tmp:
# <file system> <mount point> <type> <options> <dump> <pass> tmpfs /var/lib/postgresql/8.4/main/pg_stat_tmp tmpfs defaults,noatime,mode=1777,uid=postgres,gid=postgres,nosuid,nodev 0 0