linux 中的ipcs问题

问题描述

很多年前的项目了。碰到大流量访问的时候,就会发现内存占用很高,而且始终不释放。 最终导致mutex都无法创建,提示磁盘空间已满。其实磁盘还有很多空间。最终排查出来 的原因是ipcs -s输出了很多行。这是因为程序异常退出后没有正确释放相关资源导致的。 因为这个程序在异常退出之后会被反复重启,所以就会出现这个资源被大量占用并导致最 后资源不足的。

因为太老的项目,不想再去深究具体原因,所以写了个脚本,用crontab调用,周期检测, 如果发现资源Ipcs -s输出过多,就清空ipcs -s的内容,然后重启相关进程。

代码如下:

#!/bin/sh

ipcs_line=`ipcs | wc -l`


if [[ ipcs_line -gt 25 ]];then
	echo 'find ipcs too much. del it.'
	for i in `ipcs -s |awk '{print $2}'`
	do
		#echo ${i}
		ipcrm -s $i
	done
else
	echo 'not find ipcs too much'
fi
联系我:

Email: xudongsecret@qq.com

===完===