On 18/04/17 13:45, Stas Kelvich wrote: > Hi, > > currently logical replication worker uses ApplyContext to decode received data > and that context is never freed during transaction processing. Hence if > publication > side is performing something like 10M row inserts in single transaction, then > subscription worker will occupy more than 10G of ram (and can be killed by > OOM). > > Attached patch resets ApplyContext after each insert/update/delete/commit. > I’ve tried to reset context only on each 100/1000/10000 value of > CommandCounter, > but didn’t spotted any measurable difference in speed. > > Problem spotted by Mikhail Shurutov. >
Hmm we also do replication protocol handling inside the ApplyContext (LogicalRepApplyLoop), are you sure this change is safe in that regard? -- Petr Jelinek http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers