Назад | Перейти на главную страницу

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

Я использую XenServer с несколькими виртуальными машинами, имеющими локальные базы данных postgres. Даже когда все приложения не используются, а базы данных простаивают, каждая виртуальная машина вызывает постоянный сетевой трафик хранения, который снижает производительность устройства хранения 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 на ramdisk, чтобы избежать дискового / сетевого трафика?

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

Поскольку обновление 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

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

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

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

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

Обновите 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.