Hi,
There seems to be an unbounded growth of memory usage by the backend postgres process representing a “permanent” session in our system.
The size/res values retrieved by running the “top” utility seem to exceed the amount I would expect given the mem and buf tuning parameters of the postgresql.conf file. ( Though, I find a theoretical maximum session value formula a bit difficult value to nail down from the documentation. )
I have seen other reported issues regarding session backend memory usage in stack-overflow and the workaround has amounted to periodically, dropping and restoring the pools connection. Otherwise over time ( many days ) the connections backends, collectively keep accumulating memory, swap space starts coming into play and the system performance takes a big hit.
I have implanted the session refresh concept and begun testing for improvement, but at least wanted to report this and get some feedback on my apparent lack of understanding on what is going on under the hood here ?
Some system notes:
FreeBSD 10.x
Postgres 9..3.5 and 9.5 systems
Hardware 2 Gig/2 core and 4 Gig /4 core Memory
There are no memory related errors reported in system logs or postgres logs.
There are no outstanding uncommitted transactions. ( per pgadminIII views )
The load offered is a very regular set of queries distributed against 5 – 10 “permanent” sessions for processing a VoIP softswitch.
I have played around with adjusting the work_mem and shared buffers up and down with no impact on the memory growth observation.
On initial session connection the “top” utility would report on the order of 220M/38000K (SIZE/RES) memory connection.
After 4 days of operation the same session will indicate 516M/300M.
Thank you for any insights or suggestions on how to better analyze what is transpiring.
Best Regards
Dave Day