PostgreSQL7.0手冊-開發者手冊 -65. Postgres 信號
2019-09-08 23:34:05
供稿:網友
第六十五章. Postgres 信號
注意:由 Massimo Dal Zotto 提供
Postgres 使用下面的信號用于在 postmaster 和 后端之間通訊:
表 65-1. Postgres 信號
信號 postmaster 動作 服務器動作
SIGHUP kill(*,sighup) read_pg_options
SIGINT 退出 取消查詢
SIGQUIT kill(*,sigterm) handle_warn
SIGTERM kill(*,sigterm), kill(*,9), 退出 退出
SIGPIPE 忽略 退出
SIGUSR1 kill(*,sigusr1), 退出 迅速退出
SIGUSR2 kill(*,sigusr2) 異步通知 (SI 輸出)
SIGCHLD reaper 忽略 (存活測試)
SIGTTIN 忽略
SIGTTOU 忽略
SIGCONT 輸出狀態 (dumpstatus)
SIGFPE FloatExceptionHandler
注意:“kill(*,signal)” 表示向所有后端發送信號.
與原先的信號控制相比,主要的改變是用 SIGQUIT 代替 SIGHUP 來操作警告,SIGHUP 來重新讀取 pg_options 文件以及對發送給 postmaster 的 SIGHUP,SIGTERM,SIGUSR1 和 SIGUSR2 信號對所有活躍后端的重新定向.用這種方法,發送給 postmaster 的這些信號可以自動發送給所有這些后端而不需要知道他們的進程號(pid).要停止 postgres 的運行,我們只需要發送一個 SIGTERM 信號給 postmaster,然后它就會自動停止所有后端的運行.
SIGUSR2 信號還用于防止在某些后端長期不處理 SI 緩存造成的 SI 緩存表的溢出.當一個后端發現 SI 表到達70%的使用度,它只是向 postmaster 發送一個信號,該信號將喚醒所有空閑的后端并且令它們沖刷緩存.
程序員對信號的典型用法是:
# stop postgres
kill -TERM $postmaster_pid
# kill all the backends
kill -QUIT $postmaster_pid
# kill only the postmaster
kill -INT $postmaster_pid
# change pg_options
cat new_pg_options > $DATA_DIR/pg_options
kill -HUP $postmaster_pid
# change pg_options only for a backend
cat new_pg_options > $DATA_DIR/pg_options
kill -HUP $backend_pid
cat old_pg_options > $DATA_DIR/pg_options