systemd deletes shared memory segment in postgresql

最近在server上部署PostgreSQL9.5(源码安装), 总是报because another server process exited abnormally and possibly corrupted shared memory, google 发现竟然是systemd问题。

在RHEL7.2中,systemd-logind 服务引入了一个新特性,该新特性是:当一个user完全退出os之后,remove掉这个user所有的IPC objects。
该特性由/etc/systemd/logind.conf参数文件中RemoveIPC选项来控制。详细请看man logind.conf(5)
在RHEL7.2中,RemoveIPC的默认值为yes

cat /etc/systemd/logind.conf

> [Login]

#NAutoVTs=6

#ReserveVT=6

#KillUserProcesses=no

#KillOnlyUsers=

#KillExcludeUsers=root

#InhibitDelayMaxSec=5

#HandlePowerKey=poweroff

#HandleSuspendKey=suspend

#HandleHibernateKey=hibernate

#HandleLidSwitch=suspend

#HandleLidSwitchDocked=ignore

#PowerKeyIgnoreInhibited=no

#SuspendKeyIgnoreInhibited=no

#HibernateKeyIgnoreInhibited=no

#LidSwitchIgnoreInhibited=yes

#IdleAction=ignore

#IdleActionSec=30min

#RuntimeDirectorySize=10%   

#RemoveIPC=yes   

so 可以通过

  1. set RemoveIPC=no in /etc/systemd/logind.conf

  2. systemctl daemon-reload

  3. systemctl restart systemd-logind

References

你可能感兴趣的:(postgresql)