Tratamiento de problemas

Fallos de inicio de Postmaster

Hay varias posibles razones para que postmaster no pueda inicializarse. Compruebe el fichero de registro de postmaster, o inícielo manualmente (sin redirigir la salida estándar o la de errores) para ver los mensajes que aparecen. Alguno de los posibles mensajes de error son autoexplicativos, pero los hay que pueden no serlos tanto:

FATAL: StreamServerPort: bind() failed: Address already in use
        Is another postmaster already running on that port?
    
Esto normalmente significa lo que sugiere: accidentalmente ha iniciado una segunda instancia de postmaster en el mismo puerto en el que ya se está ejecutando uno. Sin embargo, si el mensaje de error del núcleo no es "Address already in use" o alguna variante, puede estar ocurriendo otro problema. Por ejemplo, el tratar de iniciar una sesión de postmaster en un puerto de error reservado puede producir algo como:
$ postmaster -i -p 666
FATAL: StreamServerPort: bind() failed: Permission denied
        Is another postmaster already running on that port?
    

IpcMemoryCreate: shmget failed (Invalid argument) key=5440001, size=83918612, permission=600
FATAL 1:  ShmemCreate: cannot create region
    
Un mensaje como éste posiblemente indica que el limite impuesto al tamaño de las zonas de memoria compartidas es menor que área de «buffer» que Postgres está intentando crear. (O puede significar que no dispone de soporte para la memoria compartida de tipo SysV configurado en su núcleo.) Como arreglo temporal puede tratar de iniciar postmaster con un número de «buffers» menor de lo normal (parámetro -B). Sin embargo, debería reconfigurar su núcleo para incrementar el tamaño permitido para la memoria compartida. Este mensaje puede aparecer cuando trate de iniciar varias sesiones de postmaster en la misma máquina, si el total de espacio necesario excede el límite impuesto por el núcleo.

IpcSemaphoreCreate: semget failed (No space left on device) key=5440026, num=16, permission=600
    
Un mensaje como éste no significa que se haya quedado sin espacio en el disco; significa que la cantidad máxima de semáforos permitidos por el núcleo para el SysV es menor que la cantidad que Postgres intenta crear. Como antes, puede evitar este problema iniciando el postmaster con un numero de procesos «backend» menor (parámetro -N), pero sería mejor que incrementara el límite impuesto por el núcleo.