zoukankan      html  css  js  c++  java
  • 监测NGINX服务的shell脚本

    Nginx 虽然处理并发量比 apache 确实要强点,但它这种 php-cgi 模式不是太稳定,这点网上也有朋友总结了,我在实现项目中也感受到了。  

    偶尔会出现以下情况的:php-cgi 进程突然消失了,造成PHP脚本无法访问;更不可思议的是明明是php-cgi 打开有两个端口在监听的,莫名其秒的突然有一个php-cgi 的端口被关闭了,造成所有请求全积在一个端口上,  

    结果造成PHP脚本访问异常。  

    基本这种情况,我写了个监控shell脚本的解决方案,不管以上出现那种情况,都自动恢复Nginx的服务.该脚本在生产环境上运行正常:  

    1. #!/bin/bash  
    2. #  
    3. # filename: webservermonitor.sh  
    4. # 功能:监控 nginx 的 php-cgi 是否正常  
    5. # 运行: webservermonitor.sh &  
    6. #  
    7. # php-cgi 监听的IP和端口  
    8. V_PHP_CGI_PORT="127.0.0.1:9000 127.0.0.1:9001"  
    9. # nginx重启的脚本  
    10. V_NGINX="/usr/local/nginx/sbin/restart.sh"  
    11. # 日志文件  
    12. V_LOG="/tmp/webservermonitor.log"  
    13. # 函数定义:重启nginx  
    14. function restart_nginx(){  
    15. echo "----- `date` -----" >> $V_LOG  
    16. echo "------------------" >> $V_LOG  
    17. echo "`ps aux |grep 'nginx'`" >> $V_LOG  
    18. echo "------------------" >> $V_LOG  
    19. echo "`ps aux |grep 'php-cgi'`" >> $V_LOG  
    20. echo "------------------" >> $V_LOG  
    21. echo "`netstat -nlpt | grep 'php-cgi'`" >> $V_LOG  
    22. echo "------------------" >> $V_LOG  
    23. $V_NGINX  >> $V_LOG  
    24. }  
    25. # 循环执行,不采用 crontab ,国为 crontab 最小单位是分钟,时间太长了  
    26. while :  
    27. do  
    28.     # 1:先检测 nginx 主进程是否存在  
    29.     V_NGINX_NUM=`ps axu |grep 'nginx' |grep -v 'grep' |wc -l`  
    30. if [ $V_NGINX_NUM -lt 1 ];then  
    31.         restart_nginx  
    32. continue  
    33.     fi  
    34.     # 2:再检查php-cgi是否有进程存在  
    35.     V_PHP_CGI_NUM=`ps axu |grep 'php-cgi' |grep -v 'grep' |wc -l`  
    36. if [ $V_PHP_CGI_NUM -lt 1 ];then  
    37.         restart_nginx  
    38. continue  
    39.     fi  
    40.     # 3:再判断端口是否正常  
    41. for PORT in $V_PHP_CGI_PORT  
    42. do  
    43.         V_NUM=`eval "netstat -nlpt | grep '${PORT}' | wc -l"`  
    44. if [ $V_NUM -lt 1 ];then  
    45.             restart_nginx  
    46. continue  
    47.         fi  
    48.     done  
    49.     # 休眠  
    50.     sleep 5  
    51. done  
  • 相关阅读:
    Props属性
    逆卷积:convtranspose2d(fractionally-strided convolutions)
    nn.ReflectionPad2d(镜像填充)
    conv1*1的作用
    如何将jupyter中的.ipynb文件转换成python中的.py文件
    低光图像增强学习
    pytorch 中的variable函数
    BCELoss和BCEWithLogitsLoss
    正则化的理解
    网络压缩方法总结
  • 原文地址:https://www.cnblogs.com/xuezhihen1901/p/10701800.html
Copyright © 2011-2022 走看看