Слишком много операций ввода-вывода, сгенерированных процессом сбора статистики postgres

Я использую XenServer с несколькими виртуальными машинами, имеющими локальные базы данных postgres. Даже когда все приложения не используются и базы данных простаивают, каждый vm вызывает постоянный сетевой трафик хранилища, что ухудшает производительность устройства хранения iscsi.

После запуска iotop Я отметил, что процесс сбора статистики postgres постоянно записывает на диск со скоростью около 2 МБ / с.

Я тогда отключил сбор статистики редактированием /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 на виртуальном диске, чтобы избежать дискового / сетевого трафика?

Система представляет собой современный Debian 6.0.7 (squeeze) с postgres 8.4 и около 20 баз данных с около 50 таблицами, общий размер файла дампа составляет менее 100 МБ.

2 ответа

Решение

Поскольку обновление PostgreSQL недоступно, я попытался поместить каталог pg_stat_tmp в файловую систему tmpfs, что значительно улучшило производительность. Сейчас я запускаю это на нескольких десятках систем в течение нескольких месяцев без каких-либо заметных недостатков.

Для этого просто смонтируйте pg_stat_tmp с tmpfs в вашем файле /etc/fstab:

# <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, и через год их срок службы истекает. Вы можете найти больше информации, выполнив поиск по архивам списка рассылки pgsql-general.

У вас не должно быть слишком много проблем при обновлении с 8.4 до 9.2, хотя, как обычно, вы должны читать раздел обновления примечаний к выпуску для каждого промежуточного выпуска.0 (9.0, 9.1 и 9.2). Обратите особое внимание на standard_conforming_strings а также bytea_output,

Здесь та же проблема. Я также отключил track_* и так далее.

Побочный эффект в том, что autovacuum использует эти собранные данные для запуска.

Итак, я стараюсь назначать каждую ночь vacuumdb.

Другое решение - установить autovacuum_naptime достаточно выше, чтобы система отдыхала.

Другие вопросы по тегам