Zdravim,
po upgrade na 9.2.4 se nam zacla objevoval spousta vyjimek typu "out of memory". Konfigurace zustala stejna (aktualni je v priloze).
Databazovy stroj je 6 jadro (s HT), 32GB RAM. na stroji je cca 9500 tabulek v ruznych schematech, typicky kolem 100 - 200 dotazu za vterinu (cca 50 - 120 spojeni najednou)
Uzivatelska role, ktera je prihlasena ma nastaveny work_mem na 18MB
Nenapadne prosim nekoho cim by to mohlo byt?
Typicky zaznam v logu v pripade chyby je neco jako toto:
TopMemoryContext: 1375320 total in 168 blocks; 6472 free (18 chunks); 1368848 used
TopTransactionContext: 8192 total in 1 blocks; 7328 free (0 chunks); 864 used
CFuncHash: 8192 total in 1 blocks; 1680 free (0 chunks); 6512 used
TableSpace cache: 8192 total in 1 blocks; 3216 free (0 chunks); 4976 used
Type information cache: 24240 total in 2 blocks; 3744 free (0 chunks); 20496 used
Operator lookup cache: 24576 total in 2 blocks; 11888 free (5 chunks); 12688 used
MessageContext: 568888 total in 9 blocks; 52672 free (14 chunks); 516216 used
Operator class cache: 8192 total in 1 blocks; 1680 free (0 chunks); 6512 used
smgr relation table: 1040384 total in 7 blocks; 387920 free (24 chunks); 652464 used
TransactionAbortContext: 32768 total in 1 blocks; 32736 free (0 chunks); 32 used
Portal hash: 8192 total in 1 blocks; 1680 free (0 chunks); 6512 used
PortalMemory: 8192 total in 1 blocks; 8160 free (1 chunks); 32 used
Relcache by OID: 516096 total in 6 blocks; 261232 free (10 chunks); 254864 used
CacheMemoryContext: 232883248 total in 5251 blocks; 5644000 free (2 chunks); 227239248 used
...
...
pg_auth_members_role_member_index: 3072 total in 2 blocks; 1568 free (2 chunks); 1504 used
pg_database_oid_index: 3072 total in 2 blocks; 1656 free (3 chunks); 1416 used
pg_authid_rolname_index: 3072 total in 2 blocks; 1656 free (3 chunks); 1416 used
MdSmgr: 253952 total in 5 blocks; 59168 free (0 chunks); 194784 used
tokenize file cxt: 0 total in 0 blocks; 0 free (0 chunks); 0 used
hba parser context: 15360 total in 4 blocks; 1872 free (3 chunks); 13488 used
LOCALLOCK hash: 24576 total in 2 blocks; 9808 free (4 chunks); 14768 used
Timezones: 83472 total in 2 blocks; 3744 free (0 chunks); 79728 used
ErrorContext: 8192 total in 1 blocks; 8160 free (4 chunks); 32 used
--
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny PostgreSQL-cz ve Skupinách Google.
Pokud chcete zrušit odběr skupiny, aby vám z ní již nechodily e-maily, zašlete e-mail na adresu postgresql-c...@googlegroups.com.
Další možnosti najdete na adrese https://groups.google.com/groups/opt_out.
On 20.4.2013 19:05, u...@avast.com wrote:
> Zdravim,
>
> po upgrade na 9.2.4 se nam zacla objevoval spousta vyjimek typu "out of
Chválím za upgrade, ale byla by fajn informace ze které verze jste
přešli, jinak nevíme od kdy máme v commit logu hledat ;-)
> memory". Konfigurace zustala stejna (aktualni je v priloze).
> Databazovy stroj je 6 jadro (s HT), 32GB RAM. na stroji je cca 9500
> tabulek v ruznych schematech, typicky kolem 100 - 200 dotazu za vterinu
> (cca 50 - 120 spojeni najednou)
Jak psal Pavel, zkuste odhalit dotazy na kterých to padá. Pokud to padá
hodně často tak by to neměl být zásadní problém.
Zajímavé je že se to začalo dít až po upgrade na 9.2.4 ...
> Uzivatelska role, ktera je prihlasena ma nastaveny work_mem na 18MB
Tohle s největší pravděpodobností nemá význam. Memory leaky tohoto typu
jsou většinou v částech kódu nechráněných work_mem (viz. dále), a i
kdyby tak operací používajících 32MB work_mem, tak by tam muselo být
hodně aby to vedlo k OOM.
>
> Nenapadne prosim nekoho cim by to mohlo byt?
>
> Typicky zaznam v logu v pripade chyby je neco jako toto:
...
> CacheMemoryContext: 232883248 total in 5251 blocks; 5644000 free (2
> chunks); 227239248 used
> ...
Bohužel jste umazal tu nejzajímavější část :-( Můžete někam umístit
kompletní log z OOM, včetně uzlů pod CacheMemoryContext?
Každopádně tohle říká že (nejspíš) relcache má ~230MB, což je relativně
hodně. Nemáte tam něco co nějak ošahává všechny tabulky (třeba nějaký
skript co prochází pg_class apod.)?
Případně nemáte tam nějaké triggery napsané v pythonu a pověšené na
hodně tabulek? Fix v commitu 308711af by mohl způsobit větší využití
paměti, a při velkém počtu tabulek by to mohl být problém.
T.
Dne 2013-04-22 09:12, u...@avast.com napsal:
> Zdravim,
>
> nejak se to poslalo se spatnou diakritikou ... tak snad jsem dekodoval
> dobre:
>
> Probehl pouze upgrade PostgreSQL
> Pocet "aktivnich" spojeni je v radu desitek
Takže ta spojení jsou otevřená dlouhodobě?
> Testovaci prostredi - bohuzel se jedna o interni databazi, nicmene
> dle toho co sleduji v TOPu, tak se mi moc nezda ze by na serveru byla
> uplne vyzrana RAM ... pri normalnim stavu je obsazeno cca 10GB ram, v
> topu se zda ze kolem 20GB ... takze se zda ze se to nekde zasekne...
> nicmene opravdu nemuzu najit konkretni limit...
A jak na tu paměť koukáte? Co říká "free"?
Můžete tam nastavit nějaký monitoring který by sledoval množství paměti
(RES v topu)
pro ty backendy?
Stačí primitivní, tj. každou minutu pustit
ps -eo pid,lstart,rsz,vsz,comm,args | grep postgres
a uložit to někam do souboru.
>
> Vcera jsem snizil shared_buffers na 4GB a zda ze skoro cely den bez
> problemu (az k veceru opet OOM)
Hmmmm, to celé zní dost divně a pokud není obsazena paměť tak na chybu
v Postgresu moc nevypadá - spíš mi to přijde že se v 9.2 třeba nepatrně
zvýšil objem paměti a začali jste hitovat nějaký jiný problém.
Nemáte tam náhodou nastavené overcommit_memory=2 ?
T.
Zdravim,
po upgrade na 9.2.4 se nam zacla objevoval spousta vyjimek typu "out of memory". Konfigurace zustala stejna (aktualni je v priloze).
Databazovy stroj je 6 jadro (s HT), 32GB RAM. na stroji je cca 9500 tabulek v ruznych schematech, typicky kolem 100 - 200 dotazu za vterinu (cca 50 - 120 spojeni najednou)
Uzivatelska role, ktera je prihlasena ma nastaveny work_mem na 18MB
Nenapadne prosim nekoho cim by to mohlo byt?
Typicky zaznam v logu v pripade chyby je neco jako toto:
TopMemoryContext: 1375320 total in 168 blocks; 6472 free (18 chunks); 1368848 used
TopTransactionContext: 8192 total in 1 blocks; 7328 free (0 chunks); 864 used
CFuncHash: 8192 total in 1 blocks; 1680 free (0 chunks); 6512 used
TableSpace cache: 8192 total in 1 blocks; 3216 free (0 chunks); 4976 used
Type information cache: 24240 total in 2 blocks; 3744 free (0 chunks); 20496 used
Operator lookup cache: 24576 total in 2 blocks; 11888 free (5 chunks); 12688 used
MessageContext: 568888 total in 9 blocks; 52672 free (14 chunks); 516216 used
Operator class cache: 8192 total in 1 blocks; 1680 free (0 chunks); 6512 used
smgr relation table: 1040384 total in 7 blocks; 387920 free (24 chunks); 652464 used
TransactionAbortContext: 32768 total in 1 blocks; 32736 free (0 chunks); 32 used
Portal hash: 8192 total in 1 blocks; 1680 free (0 chunks); 6512 used
PortalMemory: 8192 total in 1 blocks; 8160 free (1 chunks); 32 used
Relcache by OID: 516096 total in 6 blocks; 261232 free (10 chunks); 254864 used
CacheMemoryContext: 232883248 total in 5251 blocks; 5644000 free (2 chunks); 227239248 used
...
Zdravim,
tak to vypada asi na jeste neco jineho, vypozoroval jsem ze OOM se nam deje jen na serverech kde je vice jak 8000 tabulek a zatim co jsem zjistil tak to vypada na nejake spatne uvolnovani pameti pri persistentnich spojenich do DB.
Vypada to takto:
Zapneme DB, aplikace zacne vytvaret spojeni a casem (rychlost zavisit nastaveni work_mem a shared_buffers) se takrka uplne zaplni RAM (pritom aplikace drzi pocet konekci omezen na max 128) a pak dojde k OOM.Nicmene pokud ve fazi, kdy je temer cela RAM obsazena, v aplikaci vsechna spojeni zrusime (odpojime se z DB), dojde k tomu, ze okamzite klesne obsazena RAM na necely 1GB (zase v zavislosti na nastaveni).Takze dle me to vypada na nejaky problem s backendy a alokaci RAM ...Tusite neco v tomto smyslu? Jen doplnim ze mame 9.2.4
Zdravim,podle by to stalo za report... navrh s "inteligentnim rizenim" spojeni asi u nas v soucasne dobe neni uskutecnitelny, je pro nas jednodussi udelat automaticke obnovovani spojeni po 15 minutach
--
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny PostgreSQL-cz ve Skupinách Google.
Pokud chcete zrušit odběr skupiny, aby vám z ní již nechodily e-maily, zašlete e-mail na adresu postgresql-c...@googlegroups.com.
Další možnosti najdete na adrese https://groups.google.com/groups/opt_out.