The following documentation comment has been logged on the website: Page: https://www.postgresql.org/docs/17/kernel-resources.html Description:
The following: Another approach, which can be used with or without altering vm.overcommit_memory, is to set the process-specific OOM score adjustment value for the postmaster process to -1000, thereby guaranteeing it will not be targeted by the OOM killer. The simplest way to do this is to execute echo -1000 > /proc/self/oom_score_adj in the PostgreSQL startup script just before invoking postgres. Note that this action must be done as root, or it will have no effect; so a root-owned startup script is the easiest place to do it. If you do this, you should also set these environment variables in the startup script before invoking postgres: export PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj export PG_OOM_ADJUST_VALUE=0 These settings will cause postmaster child processes to run with the normal OOM score adjustment of zero, so that the OOM killer can still target them at need. You could use some other value for PG_OOM_ADJUST_VALUE if you want the child processes to run with some other OOM score adjustment. ---- I believe, that the export of PG_OOM_ADJUST_FILE should not point to the file that the postmaster uses, but should be for example: export PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj_child As if the example is blindly followed, then postmaster version of the file would be updated and become a candidate to be killed. If I've misunderstood then more detail needs to should why the PG_OOM_ADJUST_FILE should point to the same file for child and postmaster processes. Overall great work on the documentation, as I'm still newbe to PostreSQL but many years of using other databases.