|
|
|
@ -42,18 +42,17 @@ PGLOG="$PGDATA/serverlog" |
|
|
|
|
|
|
|
|
|
# It's often a good idea to protect the postmaster from being killed by the |
|
|
|
|
# OOM killer (which will tend to preferentially kill the postmaster because |
|
|
|
|
# of the way it accounts for shared memory). Setting the OOM_SCORE_ADJ value |
|
|
|
|
# to -1000 will disable OOM kill altogether, which is a good thing for the |
|
|
|
|
# postmaster, but not so much for individual backends. If you enable this, |
|
|
|
|
# also uncomment the DAEMON_ENV line, which will instruct backends to set |
|
|
|
|
# their OOM adjustments back to the default setting of zero. |
|
|
|
|
#OOM_SCORE_ADJ=-1000 |
|
|
|
|
#DAEMON_ENV="PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj" |
|
|
|
|
# of the way it accounts for shared memory). To do that, uncomment these |
|
|
|
|
# three lines: |
|
|
|
|
#PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj |
|
|
|
|
#PG_MASTER_OOM_SCORE_ADJ=-1000 |
|
|
|
|
#PG_CHILD_OOM_SCORE_ADJ=0 |
|
|
|
|
# Older Linux kernels may not have /proc/self/oom_score_adj, but instead |
|
|
|
|
# /proc/self/oom_adj, which works similarly except the disable value is -17. |
|
|
|
|
# For such a system, uncomment these two lines instead. |
|
|
|
|
#OOM_ADJ=-17 |
|
|
|
|
#DAEMON_ENV="PG_OOM_ADJUST_FILE=/proc/self/oom_adj" |
|
|
|
|
# /proc/self/oom_adj, which works similarly except for having a different |
|
|
|
|
# range of scores. For such a system, uncomment these three lines instead: |
|
|
|
|
#PG_OOM_ADJUST_FILE=/proc/self/oom_adj |
|
|
|
|
#PG_MASTER_OOM_SCORE_ADJ=-17 |
|
|
|
|
#PG_CHILD_OOM_SCORE_ADJ=0 |
|
|
|
|
|
|
|
|
|
## STOP EDITING HERE |
|
|
|
|
|
|
|
|
@ -80,13 +79,19 @@ test -x $DAEMON || |
|
|
|
|
fi |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# If we want to tell child processes to adjust their OOM scores, set up the |
|
|
|
|
# necessary environment variables. Can't just export them through the "su". |
|
|
|
|
if [ -e "$PG_OOM_ADJUST_FILE" -a -n "PG_CHILD_OOM_SCORE_ADJ" ] |
|
|
|
|
then |
|
|
|
|
DAEMON_ENV="PG_OOM_ADJUST_FILE=$PG_OOM_ADJUST_FILE PG_OOM_ADJUST_VALUE=$PG_CHILD_OOM_SCORE_ADJ" |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Parse command line parameters. |
|
|
|
|
case $1 in |
|
|
|
|
start) |
|
|
|
|
echo -n "Starting PostgreSQL: " |
|
|
|
|
test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj |
|
|
|
|
test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj |
|
|
|
|
test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE" |
|
|
|
|
su - $PGUSER -c "$DAEMON_ENV $DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 |
|
|
|
|
echo "ok" |
|
|
|
|
;; |
|
|
|
@ -98,8 +103,7 @@ case $1 in |
|
|
|
|
restart) |
|
|
|
|
echo -n "Restarting PostgreSQL: " |
|
|
|
|
su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w" |
|
|
|
|
test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj |
|
|
|
|
test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj |
|
|
|
|
test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE" |
|
|
|
|
su - $PGUSER -c "$DAEMON_ENV $DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 |
|
|
|
|
echo "ok" |
|
|
|
|
;; |
|
|
|
|