jerryliun 2017-09-06 02:22 采纳率: 82.6%
浏览 1171

PostgreSQL initdb 过程中semget会报错

遇到PostgreSQL initdb 过程中semget报错,怎么办?
【重现步骤】
报错的过程如下:
[sdbadmin@localhost bin]$ ./initdb -D /home/sdbadmin/pgdata/
The files belonging to this database system will be owned by user "sdbadmin".
This user must also own the server process.
The database cluster will be initialized with locale en_US.UTF-8.
The default database encoding has accordingly been set to UTF8.
fixing permissions on existing directory /home/sdbadmin/pgdata ... ok
creating subdirectories ... ok
selecting default max_connections ... 200
selecting default shared_buffers/max_fsm_pages ... 64000kB/100000
creating configuration files ... ok
creating template1 database in /home/sdbadmin/pgdata/base/1 ... 2016-08-19 04:26:38.377033 GMT,,,p13027,th-1860573088,,,,0,,,seg-10000,,,,,"WARNING","01000","""fsync"": can not be set by the user and will be ignored.",,,,,,,,"set_config_option","guc.c",10006,
ok
loading file-system persistent tables for template1 ...
2016-08-19 04:26:43.826556 GMT,,,p13033,th173938784,,,,0,,,seg-10000,,,,,"WARNING","01000","""fsync"": can not be set by the user and will be ignored.",,,,,,,,"set_config_option","guc.c",10006,
2016-08-19 12:26:43.994570 CST,,,p13033,th173938784,,,,0,,,seg-10000,,,,,"FATAL","XX000","could not create semaphores: No space left on device (pg_sema.c:132)","Failed system call was semget(127, 17, 03600).","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 (currently 3000).
The PostgreSQL documentation contains more information about configuring your system for PostgreSQL.",,,,,,"InternalIpcSemaphoreCreate","pg_sema.c",132,1 0x88b8c2 sequoiasql errstart + 0x252
2 0x761a84 sequoiasql + 0x761a84
3 0x761d51 sequoiasql PGSemaphoreCreateInitVal + 0xf1
4 0x7b4dfd sequoiasql InitProcGlobal + 0x19d
5 0x7ab1dc sequoiasql CreateSharedMemoryAndSemaphores + 0x4ec
6 0x897659 sequoiasql BaseInit + 0x19
7 0x7c4228 sequoiasql PostgresMain + 0x958
8 0x6d51f5 sequoiasql main + 0x525
9 0x39d6e1ed1d libc.so.6 __libc_start_main + 0xfd
10 0x4b2d29 sequoiasql + 0x4b2d29
child process exited with exit code 1
initdb: removing contents of data directory "/home/sdbadmin/pgdata"

  • 写回答

1条回答

  • 巨杉数据库SequoiaDB 企业官方账号 2017-09-06 02:24
    关注

    报错的意思是系统信号量不够用,而不是空间不够。这时需要增大系统信号量数量。
    查看系统信号量参数:
    [root@localhost home]# cat /proc/sys/kernel/sem
    250 32000 32 128
    semmsl semmns semopm semmni
    复制代码

    把参数改大:
    [root@localhost home]# sysctl -w kernel.sem="250 512000 100 2048"
    kernel.sem = 250 512000 100 2048
    复制代码

    执行命令使内核参数生效:
    [root@localhost home]# /sbin/sysctl -p

    查看确认修改结果:
    [root@localhost home]# sysctl -a |grep sem
    kernel.sem = 250 512000 100 2048

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!