semget No space left on device

最近使用信号量时,调用semget失败,通过strerror查看报错为No space left on device

要定位此问题,首先要知道一些系统命令
ipcs -m  查看系统共享内存信息
ipcs -q  查看系统消息队列信息
ipcs -s  查看系统信号量信息

cat /prc/sys/kernel/sem 或者ipcs -ls可查看当前系统支持的信号量信息
cat /proc/sys/kernel/sem
250 32000 32 128

250 SEMMSL max semaphores per array 信号集容纳最大信号数量
32000 SEMMNS max semaphores system wide 所有信号的最大数量
32 SEMOPM max ops per semop call 调用单个信号集中最大信号数量
128 SEMMNI max number of arrays 信号集的最大值

此处是创建信号量失败,所以只需查看ipcs -s即可,问题中用ipcs命令查看信号量数,发现被创建了128个,并且其支持的最信号量创建数为128,所以导致后续创建信号量失败
在这里插入图片描述

解决方案:
执行命令echo 32000 1024000000 500 32000 >/proc/sys/kernel/mem,将可创建的信号量最大值调大即可

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值