我正在使用具有本地postgres数据库的多个虚拟机的XenServer。 即使所有应用程序未使用且数据库处于空闲状态,每个虚拟机也会导致恒定的存储networkingstream量,从而降低了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中所build议的那样。
这消除了连续写作,但closures统计跟踪有什么不利之处吗?
还是应该将pg_stat_tmp目录放在虚拟硬盘上以避免磁盘/networkingstream量?
该系统是一个最新的Debian 6.0.7(squeeze)与postgres 8.4和约20个数据库约50表,总转储文件大小小于100 MByte。
由于升级PostgreSQL不是一种select,我曾尝试将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
升级PostgreSQL。 绝对最低限度确保你在最新的8.4版本; 如果没有解决这个问题,那么这样做很实际,你应该升级到9.2。 自从8.4以来,至less有一些问题收集者的问题已经得到解决,并且将在大约一年时间内达到报废 。 您可以通过searchpgsql-general邮件列表存档来find更多信息。
从8.4版本升级到9.2版本不应该有太多的问题,不过像往常一样,您必须阅读发行说明的升级部分,版本介于inbetween(9.0,9.1和9.2)之间。 请特别注意standard_conforming_strings和bytea_output 。