Слишком много операций ввода-вывода, сгенерированных процессом сбора статистики 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
достаточно выше, чтобы система отдыхала.