Nginx做反向代理总是被系统kill

时间:2023-01-10 06:56:45

公司使用Nginx做反向代理,以前都挺正常的,最近不知怎么回事总是无端被系统kill,而在nginx错误日志中也没有信息输出。

网上查了很多资料,也没什么靠谱的回答,唯一觉得有点关联的就是linux OOM Killer了,这篇文章感觉有点关系:理解和配置 Linux 下的 OOM Killer。也给出了相应的解决办法。

但我还是不太放心,万一最后还是被kill了怎么办,想来想去,最后还是决定写一个脚本来进行监控。

脚本功能:

每隔5秒检查一次,查看Nginx进程是否存在,如果不存在,就重新启动Ngin服务。

 #!/bin/bash
#
# filename: check.sh
# 功能:监控 nginx 是否正常
#
# nginx重启的脚本
V_NGINX="/usr/local/nginx/sbin/nginx"
# 日志文件
V_LOG="/logs/check_nginx.log" # 函数定义:重启nginx
function restart_nginx(){
echo "----- `date` -----" >> $V_LOG
echo "--------nginx process----------" >> $V_LOG
echo "`ps aux |grep 'nginx'`" >> $V_LOG
echo "--------start nginx----------" >> $V_LOG
$V_NGINX >> $V_LOG
} # 循环执行,不采用 crontab ,因为 crontab 最小单位是分钟,时间太长了
while :
do
# 检测 nginx 进程是否存在
V_NGINX_NUM=`ps axu |grep 'nginx' |grep -v 'grep' |wc -l`
if [ $V_NGINX_NUM -lt 1 ];then
restart_nginx #调用重启函数
continue
fi
# 休眠
sleep 5
done

参考资料:

http://zhengdl126.iteye.com/blog/1456417