repro memory leak under pg_stat_monitor #182
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
When adding
pg_stat_monitor
like:Memory usage keeps increasing for the pg_net background worker.
To prove this execute in one terminal:
And this in another:
watch -n 1 'ps -p $(cat build-15/bgworker.pid) -o %mem,rss,vsz,comm' %MEM RSS VSZ COMMAND 0.1 19164 722508 postgres
The RSS should be seen as always growing, which proves the memory leak.
Root cause
pg_stat_monitor statistics are split into configurable time intervals (buckets). As one bucket fills or a time interval passes, pg_stat_monitor creates a new one, keeping historical data in distinct buckets.
pg_net queries its internal tables each second.
This means that the "memory leak" is actually expected behavior by pg_stat_monitor.
We need to fix this in pg_net itself, by doing #164.