1. Nginx 虽然处理并发量比 apache 确实要强点,但它这种 php-cgi 模式不是太稳定,这点网上也有朋友总结了,我在实现项目中也感受到了。
  2. 我们一台支付机,偶尔会出现以下情况的:php-cgi 进程突然消失了,造成PHP脚本无法访问;更不可思议的是明明是php-cgi 打开有两个端口在监听的,莫名其秒的突然有一个php-cgi 的端口被关闭了,造成所有请求全积在一个端口上,
  3. 结果造成PHP脚本访问异常。
  4. 基本这种情况,我写了个监控shell脚本的解决方案,不管以上出现那种情况,都自动恢复Nginx的服务.该脚本在生产环境上运行正常:
  5. #!/bin/bash
  6. #
  7. # filename: webservermonitor.sh
  8. # 功能:监控 nginx 的 php-cgi 是否正常
  9. # 作者:V哥
  10. # 运行: webservermonitor.sh &
  11. #
  12. # php-cgi 监听的IP和端口
  13. V_PHP_CGI_PORT="127.0.0.1:9000 127.0.0.1:9001"
  14. # nginx重启的脚本
  15. V_NGINX="/usr/local/nginx/sbin/restart.sh"
  16. # 日志文件
  17. V_LOG="/tmp/webservermonitor.log"
  18. # 函数定义:重启nginx
  19. function restart_nginx(){
  20. echo "----- `date` -----" >> $V_LOG
  21. echo "------------------" >> $V_LOG
  22. echo "`ps aux |grep 'nginx'`" >> $V_LOG
  23. echo "------------------" >> $V_LOG
  24. echo "`ps aux |grep 'php-cgi'`" >> $V_LOG
  25. echo "------------------" >> $V_LOG
  26. echo "`netstat -nlpt | grep 'php-cgi'`" >> $V_LOG
  27. echo "------------------" >> $V_LOG
  28. $V_NGINX  >> $V_LOG
  29. }
  30. # 循环执行,不采用 crontab ,国为 crontab 最小单位是分钟,时间太长了
  31. while :
  32. do
  33. # 1:先检测 nginx 主进程是否存在
  34. V_NGINX_NUM=`ps axu |grep 'nginx' |grep -v 'grep' |wc -l`
  35. if [ $V_NGINX_NUM -lt 1 ];then
  36. restart_nginx
  37. continue
  38. fi
  39. # 2:再检查php-cgi是否有进程存在
  40. V_PHP_CGI_NUM=`ps axu |grep 'php-cgi' |grep -v 'grep' |wc -l`
  41. if [ $V_PHP_CGI_NUM -lt 1 ];then
  42. restart_nginx
  43. continue
  44. fi
  45. # 3:再判断端口是否正常
  46. for PORT in $V_PHP_CGI_PORT
  47. do
  48. V_NUM=`eval "netstat -nlpt | grep '${PORT}' | wc -l"`
  49. if [ $V_NUM -lt 1 ];then
  50. restart_nginx
  51. continue
  52. fi
  53. done
  54. # 休眠
  55. sleep 5
  56. done

监控Nginx服务的Shell脚本的更多相关文章

  1. 监测NGINX服务的shell脚本

    Nginx 虽然处理并发量比 apache 确实要强点,但它这种 php-cgi 模式不是太稳定,这点网上也有朋友总结了,我在实现项目中也感受到了. 偶尔会出现以下情况的:php-cgi 进程突然消失 ...

  2. Nagios监控nginx服务具体过程

    1在nginx 服务器上安装nrpe客户端: Nginx的服务须要监控起来.不然万一down了而不及时修复,会影响web应用.例如以下web应用上面启动的nginx后台进程[root@lb-net-2 ...

  3. 使用Zabbix监控Nginx服务实战案例

    使用Zabbix监控Nginx服务实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.编译安装nginx步骤详解并开启状态页 博主推荐阅读: https://www.cn ...

  4. Python 监控nginx服务是否正常

    Python 监控nginx服务是否正常 #!/usr/bin/env python import os, sys, time from time import strftime while True ...

  5. tomcat监控,自动重启shell脚本

    tomcat监控,自动重启shell脚本如下,取名 monitor_tomcat.sh: #!/bin/sh # func:自动监控tomcat脚本并且执行重启操作 # 获取tomcat进程ID(其中 ...

  6. Tomcat集群 Nginx负载均衡 shell脚本实时监控Nginx

    第一步,安装Tomcat 系统环境:Centos7 第1步:下载tomcat安装包 tomcat官网:https://tomcat.apache.org/ 第2步:安装包上传至linux中 第3步:下 ...

  7. 【zabbix告警监控】配置zabbix监控nginx服务

    zabbix监控nginx,nginx需要添加--with-http_stub_status模块 使用zabbix监控nginx,首先nginx需要配置开启ngx_status.但是我这边nginx安 ...

  8. Dubbo入门到精通学习笔记(二):Dubbo管理控制台、使用Maven构建Dubbo的jar包、在Linux上部署Dubbo privider服务(shell脚本)、部署consumer服务

    文章目录 Dubbo管理控制台 1.Dubbo管理控制台的主要作用: 2.管理控制台主要包含: 3.管理控制台版本: 安装 Dubbo 管理控制台 使用Maven构建Dubbo服务的可执行jar包 D ...

  9. zabbix4.2配置监控nginx服务

    1.监控原理 通过status模块监控(--with-http_stub_status_module)  2.修改nginx配置(/etc/nginx/conf.d/default.conf) 在被监 ...

随机推荐

  1. Android 仿今日头条频道管理(下)(GridView之间Item的移动和拖拽)

    前言 上篇博客我们说到了今日头条频道管理的操作交互体验,我也介绍了2个GridView之间Item的相互移动.详情请參考:Android 仿今日头条频道管理(上)(GridView之间Item的移动和 ...

  2. [React] Style a React component with styled-components

    In this lesson, we remove the mapping between a React component and the styles applied to it via cla ...

  3. windows 控制台下 无法获取完整的回车键值

    问题描述: 收集的网友分析: http://bbs.csdn.net/topics/370084904 因为C语言和UNIX的开发者是同事…… C语言里统一用的\n表示另起一行.微软的DOS受到了当时 ...

  4. maven 怎么在MyEclipse中打开Navigator视图

    方法一:1.点击菜单window2.选择show view菜单项3.选择other菜单项4.点击general,在其中可以找到 方法二:1.点击菜单window2.选择show view菜单项3.选择 ...

  5. MongoDbHelper 帮助类(上)

    在网上搜索mongodbHelper的帮助类时,出来的东西都大同小异,再此摘录一下. 这些代码也看了一遍,总是感觉重复的代码太多了,在后续的文章中又整合了一下,请看下篇,欢迎指正! using Sys ...

  6. C语言深度剖析-----函数与指针分析

    阅读代码的重要技巧 函数类型 函数指针 回调函数 使用示例 指针阅读技巧解析 例

  7. 快速理解Java中的五种单例模式(转)

    解法一:只适合单线程环境(不好) package test; /** * @author xiaoping * */ public class Singleton { private static S ...

  8. [Nuxt] Add CSS Libraries to Nuxt

    You can easily add CSS libraries to Nuxt using yarn or npm to install them, then simply adding them ...

  9. 【LeetCode】【C++】Linked list cycle 2

    Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Foll ...

  10. matlab 正则表达式

    regexprep Replace text using regular expression collapse all in page Syntax newStr = regexprep(str,e ...