zoukankan      html  css  js  c++  java
  • Postgresql FATAL: could not create semaphores: No space left on device

    昨天安装完成pg 9.5后,启动报错:

    FATAL:  could not create semaphores: No space left on device
    DETAIL:  Failed system call was semget(xxxxxxxxxx).
    HINT:  This error does *not* mean that you have run out of disk space.  It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded.  You need to raise the respective kernel parameter.  Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter.
     
    查看报错日志是由于内核的相关配置参数设置过小引起的。
     
    这里是共享内存段的限制,简单介绍一下
    如果数据库报FATAL: could not create shared memory segment:Cannot allocate memory 错误,可以考虑修改以下相关参数
    #ipcs -lm
    ------ Shared Memory Limits --------
    max number of segments = 4096
    max seg size (kbytes) = 67108864
    max total shared memory (kbytes) = 17179869184
    min seg size (bytes) = 1
     
    #cat  /proc/sys/kernel/shmmax
    68719476736

    SHMMAX 单个共享内存段最大字节数

     
    # cat  /proc/sys/kernel/shmmni
    4096

    SHMMNI 共享内存段最大个数 

     
    # cat  /proc/sys/kernel/shmall
    4294967296

    SHMALL系统中共享内存也总数,至少为ceil(shmmax/PAGE_SIZE)

     
    获取page_size值
    # getconf PAGE_SIZE
    4096

    可以根据实际情况修改以上参数值,在/etc/sysctl.conf配置文件中

     今天遇到的错误,主要解决以下参数的限制才能解决我们数据库启动的报错
    # ipcs -ls
     
    ------ Semaphore Limits --------
    max number of arrays = 1280
    max semaphores per array = 50100
    max semaphores system wide = 64128000
    max ops per semop call = 50100
    semaphore max value = 32767
     
     
    # cat  /proc/sys/kernel/sem
    SEMMSL   SEMMNS         SEMOPM  SEMMNI
    50100   128256000       50100   2560
    SEMMSL 每个信号量set中信号量最大个数
    SEMMNS linux系统中信号量最大个数
    SEMOPM semop系统调用允许的信号量最大个数设置,设置成和SEMMSL一样即可
    SEMMNI  linux系统信号量set最大个数
     
    所以SEMMNS=SEMMSL*SEMMNI
     
    所以要么增大信号量,要么减少max_connect参数
    这里我选择增大信号量
     
    修改 vi /etc/sysctl.conf 的以下参数
    kernel.sem = 50100 128256000 50100 2560
     
    ipcs -ls
     
    ------ Semaphore Limits --------
    max number of arrays = 2560
    max semaphores per array = 50100
    max semaphores system wide = 128256000
    max ops per semop call = 50100
    semaphore max value = 32767
     
    重新启动数据库后无报错,数据库可以正常启动。
     
    下面是官方文档中对semaphores相关参数的说明:
     
    NameDescriptionReasonable values
    SHMMAX Maximum size of shared memory segment (bytes) at least 1kB (more if running many copies of the server)
    SHMMIN Minimum size of shared memory segment (bytes) 1
    SHMALL Total amount of shared memory available (bytes or pages) if bytes, same as SHMMAX; if pages, ceil(SHMMAX/PAGE_SIZE)
    SHMSEG Maximum number of shared memory segments per process only 1 segment is needed, but the default is much higher
    SHMMNI Maximum number of shared memory segments system-wide like SHMSEG plus room for other applications
    SEMMNI Maximum number of semaphore(打旗语) identifiers (i.e., sets) at least ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16)
    SEMMNS Maximum number of semaphores system-wide ceil((max_connections + autovacuum_max_workers + max_worker_processes + 5) / 16) * 17 plus room for other applications
    SEMMSL Maximum number of semaphores(信号) per set at least 17
    SEMMAP Number of entries in semaphore map see text
    SEMVMX Maximum value of semaphore at least 1000 (The default is often 32767; do not change unless necessary)
     
     
    参考:
    http://blog.163.com/dazuiba_008/blog/static/363349812016314739538/
    http://www.postgresql.org/docs/9.4/static/kernel-resources.html#SYSVIPC-PARAMETERS
  • 相关阅读:
    [原创]FineUI秘密花园(二十九) — 用户控件概述
    FineUI v3.2.4发布了!
    [原创]FineUI秘密花园(二十六) — 选项卡控件概述
    [原创]FineUI秘密花园(三十) — ViewState与XState (本系列文章最后一篇,兑现承诺,现提供完整PDF版下载!)
    FineUI 将不再内置 ExtJS (严格遵守 ExtJS 的开源规则)
    fineui.com 可以正常访问了
    [原创]22行JavaScript代码实现QQ群成员提取器,绿色、环保、无病毒!
    [原创]如何在FineUI中集成jQuery UI的AutoComplete组件
    《计算机程序的解释和构造》(SICP)学习2-对系统结构的两种不同的“世界观”
    报表开发最后一计使用iTextSharp来开发报表
  • 原文地址:https://www.cnblogs.com/xiaotengyi/p/5439231.html
Copyright © 2011-2022 走看看