PG系列~问题汇总

一 信号量问题

1 说明

PostgreSQL数据库是多进程数据库,进程和进程之间访问同一个共享内存时,需要各种各样的“锁”机制,通常信号量
指的就是进程之间的“锁”。需要设置kernel.sem=20 13000 20 130(独立运行PG),参数的4个数据对应:SEMMSL、SEMMNS、
SEMOPM、SEMMNI。
·SEMMSL:信号集的最大信号量数,PostgreSQL要求大于17,取整数20,Oracle要求是250。
·SEMMNS:整个系统范围内的最大信号量数,所以SEMMNS = SEMMSL *SEMMNI。
·SEMOPM:Semop函数在一次调用中所能操作一个信号量集中最大的信号量数,所以能常与SEMMSL相同。
·SEMMNI:信号量集的最大数目,PostgreSQL数据库中要求是数据库进程数/16,假设允许2000个连接,即需要至
少130个信号量集数目。这个进程数不只是用户服务进程,还需要包括一些管理的服务进程

信号集X单信号集的最大信号量数=整个系统范围内的最大信号数量

2 查看方法

cat /proc/sys/kernel/sem 

3 说明

个人认为当前环境信号量设置的时候没有考虑类似PGSQL这种多进程的运行程序

4 调整

cat /proc/sys/kernel/sem
sysctl -w kernel.sem="250 65000 32 260"
echo "kernel.sem = 250 65000 32 260" >> /etc/sysctl.conf

二  pgpool无法启动

报错提示  watchdog child exits with status 768

解决方法  如果无法加入而又要求是主 则关闭其他剩余pgpool 优先启动这个节点pgpool 成为master 其他节点随后启动加入即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章