一、异常之资源耗尽
[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
原因:系统中缺少内部进程通信资源
- 检查系统当前IPCS信号量(Semaphore)资源情况:
# ipcs -s |wc -l
32004
- 查看系统当前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
查看修改后的结果:
二、管理信号量
-
查看哪些用户占用了信号量
[root@docker ~]# ipcs -s | tail -n +4 | head -n -1 | tr -s ' ' | cut -d' ' -f3 | sort | uniq -c | sort -nr
-
清除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
-
清除其他软件的占用的信号量(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
-
手动释放信号量资源
[root@docker ~]# ipcrm -s semid