Linux系统资源之信号量IPCS

Linux 系统资源之信号量

一、异常之资源耗尽

 [Thu Sep 20 17:39:54.387218 2018] [core:emerg] [pid 9462] (28)No space left on device: AH00023: Couldn't create the rewrite-map mutex
ERROR: Couldn't create the rewrite-map mutex

在这里插入图片描述
原因:系统中缺少内部进程通信资源

  1. 检查系统当前IPCS信号量(Semaphore)资源情况:
# ipcs -s |wc -l 
32004
  1. 查看系统当前IPCS资源限制
# ipcs -sl #结果如下所示:

当前系统资源限制:
在这里插入图片描述

综上可知,当前系统没有IPCS资源可用导致:

解决办法:
方法一:
直接使用如下命令(直接生效,重启后失效):

# sysctl -w kernel.sem="250 64000 32 128"
kernel.sem = 250 64000 32 256

查看当前系统资源限制:

# sysctl -a| grep kernel.sem
kernel.sem = 250 64000 32 256

方法二、重启后依旧生效:

echo 'kernel.sem=250 64000 32 256' >> /etc/sysctl.conf

查看修改的参数:

# cat /etc/sysctl.conf | grep kernel.sem
kernel.sem = 250 32000 32 192

重新加载配置文件,立即生效

#  sysctl -p

查看修改后的结果:
在这里插入图片描述

二、管理信号量

  1. 查看哪些用户占用了信号量

    [root@docker ~]# ipcs -s | tail -n +4 | head -n -1 | tr -s ' ' | cut -d' ' -f3 | sort | uniq -c | sort -nr
    
  2. 清除Apache 占用的信号量资源

    [root@docker ~]#  ipcs -s | tail -n +4 | head -n -1 | tr -s ' ' | cut -d' ' -f2,3 | while read -r id owner; do [[ $owner == "httpd" ]] && ipcrm -s "$id"; done
    
  3. 清除其他软件的占用的信号量(ipcs资源)

    [root@docker ~]# ipcs -s | tail -n +4 | head -n -1 | tr -s ' ' | cut -d' ' -f2,3 | while read -r id owner; do [[ $owner == "somesoftware" ]] && ipcrm -s "$id"; done
    
  4. 手动释放信号量资源

    [root@docker ~]#  ipcrm -s  semid
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中,共享内存是一种用于进程间通信的机制,多个进程可以访问同一块共享内存区域。使用ipcs -m命令可以查看当前系统中的共享内存信息,而使用ipcrm -m shmid命令可以删除指定的共享内存。 信号量是一种用于进程同步和互斥的机制,可以用来保证对共享内存的正确访问。在Linux中,可以通过信号量来实现共享内存的同步。共享内存本身不提供任何保护资源,因此需要利用其他机制来保证数据的正确性。通过使用信号量,可以实现多个进程之间对共享内存的同步和互斥操作,从而避免数据访问的竞争问题。 在Linux中,要创建一个共享内存,可以使用shmget函数,该函数的原型为: int shmget(key_t key, size_t size, int shmflg); 通过指定key、size和shmflg参数,可以创建一个指定大小和属性的共享内存区域。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Linux——进程间通信(2)——共享内存、信号、信号量](https://blog.csdn.net/jason_stanson/article/details/117156055)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Linux--信号量共享内存](https://blog.csdn.net/m0_59052131/article/details/127970222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值