Portál AbcLinuxu, 26. dubna 2024 17:52


Dotaz: postgres: stats collector process + iowait a zápis na disk

12.4.2010 16:49 VSi | skóre: 28
postgres: stats collector process + iowait a zápis na disk
Přečteno: 292×
Odpovědět | Admin
Zdravím,

mám takový problém s PostgreSQL serverem - Debian Lenny, výchozí nastavení, asi 100 databází (tak 30 se jich vůbec nepoužívá - zálohy apod.), v každé tak 30 tabulek, celkový objem 800 MB. Server není moc zatížený, většina dotazů jsou SELECTy. Vše je na 2×250 GB SATA HDD, md raid 1, ext3 (ordered mode). Disky mají pro jistotu vypnutou "drive write cache" - zatím to nevadilo a jinak prý hrozí i totální poškození ext3 při výpadku napájení, protože mdraid+lvm neumí správně bariéry (snad opraveno v 2.6.31 ?). Server má 8GB RAM, 4G úplně volné, CPU Intel E2160, zatížení CPU do 10% (až na ten iowait, viz dále).

Momentálně zabírá IOWAIT kolem 10-25% z jednoho CPU, podle zátěže. Procento IOWAIT se zvyšovalo s roustoucím počtem db v postgresu. Pokud postgres běží, iostat ukazuje trvale zápis asi 300 KB/s, tohle číslo v čase roste stejně s tím počtem db a iowaitem.

Jak jsem zjistil nástrojem iotop, způsobuje tohle proces postgres: stats collector process ve spojení s [kjournald]. Při interaktivním sledování vyskočí ve sloupci "IO" každých 5 vteřin tyhle 2 procesy. Výstup iotop - souhrn za 60s:
Total DISK READ: 0.53 K/s | Total DISK WRITE: 1.96 M/s
  PID USER      DISK READ  DISK WRITE   SWAPIN    IO>    COMMAND
 1983 root           0 B/s    4.26 K/s  0.00 % 18.27 % [kjournald]
23784 postgres       0 B/s   23.45 K/s  0.00 %  8.49 % postgres: stats collector process
 1981 root           0 B/s    0.67 K/s  0.00 %  5.28 % [kjournald]
 1984 root           0 B/s    0.07 K/s  0.00 %  1.66 % [kjournald]
 1027 root           0 B/s       0 B/s  0.00 %  1.35 % [md1_raid1]
 1117 root           0 B/s    3.00 K/s  0.00 %  0.77 % [kjournald]
Zajímavé je tady číslo "Total DISK WRITE: 1.96 M/s", které se neshoduje s výstupem iostat.

Pokud na obou discích v RAIDu povolím "drive write cache", tak IOWAIT už CPU neužírá. Bojím se, že s přibývajícími databázemi bude tahle zátěž stoupat i když k tomu není důvod.

Hledal jsem řešení všude možně, ale našel jsem jen zmínku že by to mohlo souviset se souborem pgstat.stat, který se pořád dokola zapisuje na disk, a že ho snad jde v PG 8.4 nějakým parametrem přemístit na ramdisk... U mě má ten soubor 1,4MB.

Setkal se s takovým chováním někdo? Jde tohle nějak omezit laděním nastavení postgresu? Nebo už není třeba se bát zapnout write cache?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

okbob avatar 12.4.2010 17:26 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: postgres: stats collector process + iowait a zápis na disk
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mám pocit, že se docela nedávno řešil problém s náročností stat collectoru 8.3 - můžete spustit příkaz SELECT pg_stat_reset(); jako postgres - samozřejmě, že do toho souboru se neustale zapisuje - a pokud máte vypnutou writecache, tak to nebude žádná sláva - můžete statistiky vypnout - pak musíte ručně (cron) spouštět vacuum.

http://archives.postgresql.org/pgsql-general/2010-04/msg00087.php http://www.postgresql.org/docs/8.3/static/monitoring-stats.html

viz track_counts (boolean)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.