Nginx 虽然处理并发量比 apache 确实要强点,但它这种 php-cgi 模式不是太稳定,这点网上也有朋友总结了,我在实现项目中也感受到了。
我们一台支付机,偶尔会出现以下情况的:php-cgi 进程突然消失了,造成PHP脚本无法访问;更不可思议的是明明是php-cgi 打开有两个端口在监听的,莫名其秒的突然有一个php-cgi 的端口被关闭了,造成所有请求全积在一个端口上,
结果造成PHP脚本访问异常。
基本这种情况,我写了个监控shell脚本的解决方案,不管以上出现那种情况,都自动恢复Nginx的服务.该脚本在生产环境上运行正常:
#!/bin/bash
#
# filename: webservermonitor.sh
# 功能:监控 nginx 的 php-cgi 是否正常
# 作者:V哥
# 运行: webservermonitor.sh &
#
# php-cgi 监听的IP和端口
V_PHP_CGI_PORT="127.0.0.1:9000 127.0.0.1:9001"
# nginx重启的脚本
V_NGINX="/usr/local/nginx/sbin/restart.sh"
# 日志文件
V_LOG="/tmp/webservermonitor.log"
# 函数定义:重启nginx
function restart_nginx(){
echo "----- `date` -----" >> $V_LOG
echo "------------------" >> $V_LOG
echo "`ps aux |grep 'nginx'`" >> $V_LOG
echo "------------------" >> $V_LOG
echo "`ps aux |grep 'php-cgi'`" >> $V_LOG
echo "------------------" >> $V_LOG
echo "`netstat -nlpt | grep 'php-cgi'`" >> $V_LOG
echo "------------------" >> $V_LOG
$V_NGINX >> $V_LOG
}
# 循环执行,不采用 crontab ,国为 crontab 最小单位是分钟,时间太长了
while :
do
# 1:先检测 nginx 主进程是否存在
V_NGINX_NUM=`ps axu |grep 'nginx' |grep -v 'grep' |wc -l`
if [ $V_NGINX_NUM -lt 1 ];then
restart_nginx
continue
fi
# 2:再检查php-cgi是否有进程存在
V_PHP_CGI_NUM=`ps axu |grep 'php-cgi' |grep -v 'grep' |wc -l`
if [ $V_PHP_CGI_NUM -lt 1 ];then
restart_nginx
continue
fi
# 3:再判断端口是否正常
for PORT in $V_PHP_CGI_PORT
do
V_NUM=`eval "netstat -nlpt | grep '${PORT}' | wc -l"`
if [ $V_NUM -lt 1 ];then
restart_nginx
continue
fi
done
# 休眠
sleep 5
done
分享到:
相关推荐
有时候服务器的并发量大时会导致服务器宕机或者请求服务器返回502等信息,故为了能在出现上述情况后第一时间 服务器自我处理
监控生产环境nginx日志发告警邮件,需要使用linux系统的定时任务,如5分钟执行或者其他时间间隔
常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx.conf nginx访问日志分析...
18个Linux Shell脚本经典案例合集,内含: Dos攻击防范(自动屏蔽攻击IP).sh Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx访问日志分析脚本.sh...
18个Linux Shell脚本经典案例(1-18) 脚本 Dos攻击防范(自动屏蔽攻击IP) Linux系统发送告警脚本 MySQL数据库备份单循环 MySQL数据库备份多循环 nginx 访问访问日志按天切割 nginx nginx访问日志分析脚本 一键查看...
主要介绍了监控php-fpm并自动重启服务的shell脚本,脚本的主要功能:不断检查网站的状态,如果异常就重启php-fpm服务,需要的朋友可以参考下
此脚本写得非常通用,只要修改check.d目录下的配置文件就可以,conf目录下为主配置文件,check.d目录下主要是你想要监测的服务的配置文件,我的里面有例子!可以监控nginx ,apache ,mysql ,ftp ,等
shell脚本合集,包括linux告警、mysql备份、nginx日志分析、系统初始化配置、服务器资源监控、lamp脚本、linux故障检测、自动发布java项目、入侵与检测、端口扫描正则匹配、一键安装脚本等等
WEB服务器使用memcached,但是不知道为什么memcached老是挂掉(基本20分钟~50分钟左右),导致部分网站页面在访问的时候出错;定义日志后,查看日志也未能发现什么;...nginx=`/usr/local/nginx/sbin/nginx -s reload
ssh_without_pass 免秘钥处理2018.04.26win_bashwin批处理oracle备份脚本2018.03.26logrotate日志切割,nginx,php等模板,nohup_split 等脚本2018.02.24zabbixredis 监控2018.02.01backup文件目录备份,日志备份2018....
需要用到Shell脚本每隔3秒钟去监控一个软件进程的运行状态,发现crond似乎只支持到分,不知道秒,怎么办呢? 第一种方法: 当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如下: cat kick...
C攻击是DDOS(分布式拒绝服务)的一种,相比其它的DDOS攻击CC似乎更有技术含量一些。这种攻击你见不到虚假IP,见不到特别大的异常流量,但造成服务器无法进行正常连接。最让站长们忧虑的是这种攻击技术含量低,利用...
4.1.4 Shell脚本案例 4.1.5Shel1数组编程 5. Linux深入篇 5.1构建 Nginx WEB服务器 Nginx WEB安装 5.1.2 nginx虚拟主机配置 5.1.3 nginx性能优化 5.1.4 nginx参数深入理解 5.1.5 Nginx Rewrite规则 面面面面 5.2构建...
4.1. 4 Shell脚本案例 67 4.1. 5 Shell数组编程 71 5. Linux深入篇 72 5. 1 构建Nginx WEB服务器 72 5.1. 1 Nginx WEB安装 73 5.1. 2 Nginx 虚拟主机配置 74 5.1. 3 Nginx性能优化 75 5.1. 4 Nginx参数深入理解 77 ...
下面的脚本能统计出网站的总访问量,以及404,500出现的次数。统计出来后,我们可以结合监控宝来进行记录,进而可以看出网站访问量是否异常,是否存在攻击,一目了然。还可以根据查看500出现的次数,进而判断网站程序...
核心代码: 代码如下:#/bin/bashset -xHOSTS=”nginx mysql php-cgi”for myhost in $... then case $myhost in nginx) cd /usr/local/webserver/nginx/sbin/ ./nginx echo “nginx has be down” sleep 5 my
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:...
shell脚本高手速成 Web大并发集群部署 Web服务器-Apache Web服务器-Nginx Web服务器-Tomcat 部署高可用集群 构建可视化数据分析系统-ELK 企业级监控系统-Zabbix 容器监控-Prometheus 数据安全之企业存储 虚拟化之KVM
,Linux运维安装工具及脚本,K8S构建,各个环境构建部署等,包括不限于于shell、python,运维脚本、docker脚本、各种工具库,收集各类运维常用工具脚本,实现快速安装nginx、mysql、pg、apache、php、redis、tomcat ...