本篇随笔转载自https://my.oschina.net/u/2381678/blog/552346。

在生产环境postgresql中,需要调整最大链接数,但是调整后无法启动

错误的意思就是内核中信号量集和信号量的配置太小了。信号量在内核中,主要解决进程间同步、异步的锁问题,因为PostgreSQL的每个链接是一个进程,所以需要更多的锁来使用。查看方法:

这四个数字分别是:SEMMSL,SEMMNS,SEMOPM,SEMMNI

SEMMSL:内核参数,控制每个信号量集合的最大信号数。

SEMMNS:内核参数,控制系统范围内能使用的最大信号量数。

SEMOPM:semop()函数(内核函数,用来操作信号量)每次调用锁能操作的一个信号量集中的最大信号量。

SEMMNI:内核中信号量集的最大数量。

SEMMNS=SEMMSL*SEMMNI

SEMOPM=SEMMSL,这两个参数一般设置为相同。

对于PostgreSQL数据库来说:

SEMMNI >= ceil((max_connections + autovacuum_max_workers + 4) / 16)

SEMMSL >= 17

假设一个PG库如下设置:

max_connections=1000, autovacuum_max_workers =3,

则这几个参数的设置是:

SEMMNI = ceil((1000+3+4))/16)=63,因为考虑到其他进程使用,一般设置为63+25=88

SEMMSL要求大于17,保持默认250

SEMOPM=SEMSL=250

SEMMNS=SEMMNI*MSMMSL=88*250=22000

在/etc/sysctl.conf文件中添加:

kernel.sem=250  22000 250  88

运行:sysctl -p

使配置生效

设置完成之后,如果启动数据库还是报同样的错误,那么可以重启操作系统。(具体什么原因,我也不知道,如果有哪位明白的大神,请赐教)

postgresql设置max_connections太大无法启动 (转载)的更多相关文章

  1. -Xms 和 -Xmx 不能设置的太大

    之前我一直有一个疑问,就是-Xms 和 -Xmx不是设置的越大越好吗?现在才明白怎么回事. 通过在命令行中执行 java 或者启动某种基于 Java 的中间件来运行 Java 应用程序时,Java 运 ...

  2. 项目太大tomcat启动不起来

    双击server,Open launch configuration Arguments VM arguments增加参数: -Xms512m -Xmx1024m -Xss4m -XX:PermSiz ...

  3. TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

    TCP/IP详解学习笔记   这位仁兄写得太好了   TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...

  4. oracle 11g 导入表时 提示 ***值太大错误

    导入数据库时,总是提示**值太大,实际值是**的错误. 具体忘了错误代码是什么了 ——! 经查询,这个是由于字符集设置的不是gbk的,导致导入时遇到中文字符出现的问题, 解决方法: 如果可以的话就把数 ...

  5. Windows版 PostgreSQL 利用 pg_upgrade 进行大版升级操作

    最近 PostgreSQL 15 版本正式发布了,新版本的各种特性和好处本文就不展开介绍了,主要介绍一下 Windows 环境下 PostgreSQL 大版本升级的方法,我们现在的几个数据库都是运行在 ...

  6. 分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据

    分享工作中遇到的问题积累经验 事务日志太大导致insert不进数据 今天开发找我,说数据库insert不进数据,叫我看一下 他发了一个截图给我 然后我登录上服务器,发现了可疑的地方,而且这个数据库之前 ...

  7. Sqlserver2005日志文件太大,使其减小的方法

    Sqlserver2005日志文件太大,使其减小的方法: 运行下面的三行 dbName为数据库名: backup log dbNamewith NO_LOG backup log dbNamewith ...

  8. Unity3D占用内存太大的解决方法

    原地址:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大 ...

  9. 设置U盘为第一启动顺序

    本文转载:http://u.diannaodian.com/Article/1004.html 盘安装系统的首要步骤就是设置U盘为第一启动顺序.下面电脑店官网就来说说到底如何来设置U盘启动顺序吧.   ...

随机推荐

  1. SQL-select常用语句

    1.全套装备 select [select选项] 字段列表[字段别名]/* from 数据源[where 条件子句] [group by条件子句] [having 子句] [order by 子句] ...

  2. 虚拟路由冗余(VRRP)协议

    1. 前言 VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还 ...

  3. nodejs的作用【转】

    来源地址:https://www.zhihu.com/question/33578075/answer/56951771 如果你去年注意过技术方面的新闻,我敢说你至少看到node.js不下一两次.那么 ...

  4. 检查hdfs块的块-fsck

    hadoop集群运行过程中,上下节点是常有的事情,如果下架节点,hdfs存储的块肯定会受到影响. 如何查看当前的hdfs的块的状态 hadoop1.x时候的命令,hadoop2.x也可使用: hado ...

  5. Visual Studio 2019(VS2019)正式版注册码秘钥

    Visual Studio 2019 EnterpriseBF8Y8-GN2QH-T84XB-QVY3B-RC4DF Visual Studio 2019 ProfessionalNYWVH-HT4X ...

  6. leetcode 903. DI序列的有效排列

    题目描述: 我们给出 S,一个源于 {'D', 'I'} 的长度为 n 的字符串 .(这些字母代表 “减少” 和 “增加”.)有效排列 是对整数 {0, 1, ..., n} 的一个排列 P[0], ...

  7. C#原型模式(深拷贝、浅拷贝)

    原型模式就是用于创建重复的对象,当想要创建一个新的对象但是开销比较大或者想将对象的当前状态保存下来的时候,我们就可以使用原型模式. 创建原型 public abstract class Base { ...

  8. Java8 新特性 Optional 类

    Optional 类的简介   Optional类的是来自谷歌Guava的启发,然后就加入到Java8新特性中去了.Optional类主要就是为子决解价值亿万的错误,空指针异常.   Optional ...

  9. PHP中直接使用sql语句

    SELECT * FROM `tf_user` WHERE (`company_id` = '117' OR `other_company_ids` LIKE '%117,%' OR `other_c ...

  10. Window应急响应(六):NesMiner挖矿病毒

    0x00 前言 作为一个运维工程师,而非一个专业的病毒分析工程师,遇到了比较复杂的病毒怎么办?别怕,虽然对二进制不熟,但是依靠系统运维的经验,我们可以用自己的方式来解决它. 0x01 感染现象 1.向 ...