Terlalu banyak I / O yang dihasilkan oleh proses pengumpul statistik postgres

10

Saya menggunakan XenServer dengan beberapa mesin virtual yang memiliki database postgres lokal. Bahkan ketika semua aplikasi tidak digunakan dan database tidak digunakan, setiap vm menyebabkan lalu lintas jaringan penyimpanan konstan yang menurunkan kinerja perangkat penyimpanan iscsi.

Setelah berjalan iotopsaya mencatat bahwa proses proses collector stats stats terus menulis ke disk dengan kecepatan sekitar 2 MByte / s.

Saya kemudian menonaktifkan pengumpulan statistik dengan mengedit /etc/postgresql/8.4/main/postgresql.conf:

#------------------------------------------------------------------------------
# RUNTIME STATISTICS
#------------------------------------------------------------------------------

# - Query/Index Statistics Collector -

track_activities = off
track_counts = off
...

seperti yang disarankan di http://www.postgresql.org/docs/8.4/static/runtime-config-statistics.htm .

Ini menghilangkan penulisan terus-menerus, tetapi apakah ada kerugian mematikan pelacakan statistik?

Atau haruskah saya lebih suka menempatkan direktori pg_stat_tmp pada ramdisk untuk menghindari lalu lintas disk / jaringan?

Sistem ini adalah Debian 6.0.7 (squeeze) yang mutakhir dengan postgres 8.4 dan sekitar 20 database dengan sekitar 50 tabel, total ukuran file dump kurang dari 100 MByte.

nn4l
sumber

Jawaban:

7

Karena memutakhirkan PostgreSQL bukan suatu pilihan, saya telah mencoba menempatkan direktori pg_stat_tmp pada sistem file tmpfs, yang menghasilkan peningkatan kinerja yang signifikan. Saya sekarang menjalankan ini pada beberapa lusin sistem selama beberapa bulan tanpa ada kekurangan yang nyata.

Untuk melakukan ini, cukup pasang pg_stat_tmp dengan tmpfs di file / etc / fstab Anda:

# <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
nn4l
sumber
Saya melakukan ini untuk Postgresql 9.1. Salah satu server saya memiliki penulisan berkelanjutan 1 MB / s sepanjang hari. Ini membuatnya hampir tidak ada. Ini disetujui oleh dokumen , BTW: "... Menunjuk ini pada sistem file berbasis RAM akan mengurangi persyaratan I / O fisik dan dapat menyebabkan peningkatan kinerja."
Halfgaar
0

Tingkatkan PostgreSQL. Paling tidak, pastikan Anda berada pada rilis 8.4 terbaru; jika itu tidak mengatasinya dan itu praktis untuk dilakukan, Anda mungkin harus meningkatkan ke 9.2. Setidaknya beberapa masalah seputar pengumpul statistik telah diatasi sejak 8.4, dan akan mencapai akhir hidup dalam waktu sekitar satu tahun . Anda mungkin dapat menemukan informasi lebih lanjut dengan mencari arsip milis pgsql-umum .

Anda seharusnya tidak memiliki terlalu banyak masalah untuk memutakhirkan dari 8,4 menjadi 9,2, meskipun seperti biasa Anda harus membaca bagian pemutakhiran dari catatan rilis untuk setiap perilisan .0 peralihan (9.0, 9.1 dan 9.2). Berikan perhatian khusus pada standard_conforming_stringsdan bytea_output.

Craig Ringer
sumber
0

Masalah yang sama disini. Saya juga menonaktifkan track_*dan sebagainya.

Efek sampingnya autovacuumadalah menggunakan data yang dikumpulkan ini untuk menjalankannya.

Jadi, saya mengurus jadwal malam a vacuumdb.

Solusi lain adalah mengatur autovacuum_naptimecukup tinggi agar sistem beristirahat.

Gelma
sumber