Performance

postgres stats 收集器程序生成的 I/O 過多

  • March 27, 2020

我將 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

引用自:https://serverfault.com/questions/495057