postgres stats收集器进程生成的I / O过多


10

我将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(压缩版),具有postgres 8.4和约20个数据库(约50个表),总转储文件大小小于100 MB。

Answers:


7

由于无法升级PostgreSQL,因此我尝试将pg_stat_tmp目录放置在tmpfs文件系统上,从而显着提高了性能。我现在在几十个系统上运行了几个月,没有任何明显的缺点。

为此,只需在/ etc / fstab文件中将pg_stat_tmp与tmpfs挂接即可:

# <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

我是为Postgresql 9.1做的。我的一台服务器全天连续写入1 MB / s。这使它几乎降为零。它得到了文档 BTW 的认可:“ ...将其指向基于RAM的文件系统将减少物理I / O要求,并可能导致性能提高。”
Halfgaar 2015年

0

升级PostgreSQL。至少要确保您使用的是最新的8.4版本;如果这样不能解决问题,并且这样做很实用,则应该升级到9.2。自8.4以来,至少已解决了有关统计信息收集器的一些问题,这些问题将在大约一年后终止。您可以通过搜索pgsql-general邮件列表档案来找到更多信息。

从8.4升级到9.2不会有太多问题,尽管通常您必须阅读介于(9.0、9.1和9.2)之间的每个.0版本的发行说明的升级部分。要特别注意standard_conforming_stringsbytea_output


0

这里同样的问题。我也禁用了track_*等等。

副作用autovacuum是使用此收集的数据启动。

因此,我要每天晚上安排一次vacuumdb

其他解决方案是将其设置autovacuum_naptime得足够高,以使系统处于静止状态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.