Postgres usa las siguientes se�ales para la
comunicaci�n entre el postmaster y los backends:
Tabla 1. Se�ales Postgres
Signal | Acci�n postmaster | Acci�n del servidor |
---|
SIGHUP | kill(*,sighup) | read_pg_options |
SIGINT | die | cancela la consulta |
SIGQUIT | kill(*,sigterm) | handle_warn |
SIGTERM | kill(*,sigterm), kill(*,9), die | muerte |
SIGPIPE | ignored | muerte |
SIGUSR1 | kill(*,sigusr1), die | muerte r�pida |
SIGUSR2 | kill(*,sigusr2) | notificaci�n as�ncrona (Vaciado SI) |
SIGCHLD | reaper | ignorado (prueba de funcionamiento) |
SIGTTIN | ignorado | |
SIGTTOU | ignorado | |
SIGCONT | dumpstatus | |
SIGFPE | | FloatExceptionHandler |
| "kill(*,signal)" significa enviar una se�al a todo los backends. |
Los principales cambios del viejo gestor de se�al es el uso de SIGQUIT en lugar
de SIGHUP para gestionar los avisos, SIGHUP intenta releer el fichero de pg_options y lo
redirecciona a todos los backends activos de SIGHUP, SIGTERM, SIGUSR1 y SIGUSR2
llamados por el postmaster.
Por este camino estas se�ales enviada al postmaster pueden ser enviadas
autom�ticamente hacia todos los backends sin necesidad de conocer sus pids.
Para bajar postgres lo �nico que se necesita es enviar un SIGTERM al postmaster
y esto parar� autom�ticamente todos los backends.
La se�al SIGUSR2 es tambi�n usado para prevenir el desbordamiento del cache de la tabla SI
esto pasa cuando alg�n backend no procesa la cache SI durante un largo periodo de tiempo.
Cuando el backend detecta que la tabla SI esta a mas de un 70% simplemente env�a una se�al
al postmaster el cual despertar� a todos los backends desocupados y los hace que vac�e
el cache.
El uso t�pico de las se�ales por los programadores puede ser el siguiente:
# 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 |