日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于nginx信号控制的“故障”案例

發(fā)布時(shí)間:2025/7/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于nginx信号控制的“故障”案例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? 關(guān)于nginx信號(hào)控制的“故障”案例

? ?最近幾天發(fā)現(xiàn)nginx的日志老切割不成功,遂來查找問題。

? ? 最開始以為是logrotate的腳本問題,遂手動(dòng)切割,運(yùn)行以下的命令

  • logrotate?-vf?/etc/logrotate.d/nginx??
  • ? ? 發(fā)現(xiàn)運(yùn)行這個(gè)是沒有問題的,終于,在service nginx restart后,發(fā)現(xiàn)了問題

    ? ? 問題是在用service nginx restart后,nginx.pid文件才會(huì)自動(dòng)消失,于是,仔細(xì)檢查腳本,發(fā)現(xiàn)一些端倪啊,一個(gè)字眼出現(xiàn)了

  • killproc?$prog?-QUIT?
  • -QUIT從容關(guān)閉,也就是說這個(gè)進(jìn)程是慢慢關(guān)閉的,不是立即關(guān)閉的,于是驗(yàn)證。如圖

    查看進(jìn)程如下

    可以看到,nginx正在shutdown之中,但沒有一下子全部關(guān)閉了。

    隨著時(shí)間的推移,nginx老的進(jìn)程在繼續(xù)關(guān)閉中……

    到最后,nginx之前的老進(jìn)程全部關(guān)閉……

    這時(shí),nginx.pid文件沒有了

    到此,nginx.pid文件神奇消失的問題終于被找出來了。

    ? 繼續(xù)分析-----日志分割,依靠的是nginx.pid獲取nginx的進(jìn)程號(hào),分割成功后,出現(xiàn)的情況是nginx依然昨天的日志,不寫分割后的日志。

    ? ?那么現(xiàn)在需要對(duì)這個(gè)腳本進(jìn)行修改,把stop函數(shù)中的-QUIT改為-TERM 立即關(guān)閉。(話說我這個(gè)腳本是來自官網(wǎng)改造的,看來官網(wǎng)也不是100%的準(zhǔn)確哦,做運(yùn)維要細(xì)心啊

    ? ?官方腳本地址http://wiki.nginx.org/RedHatNginxInitScript

    ? 再次運(yùn)用此腳本重啟

  • service?nginx?restart?
  • ? 問題不再重現(xiàn),已經(jīng)解決了。

    總結(jié),一個(gè)小小的參數(shù),可能會(huì)引發(fā)無限大的問題,所以,學(xué)知識(shí)要細(xì)心啊!

    =============================================================

    附錄一:nginx的信號(hào)控制

  • TERM,INT 快速關(guān)閉;?
  • QUIT? 從容關(guān)閉?
  • HUP? 平滑重啟,重新加載配置文件;?
  • USER1? 重新打開日志文件,在切割日志的時(shí)候用途較大;?
  • USER2? 平滑升級(jí)可執(zhí)行程序;?
  • WINCH? 從容關(guān)閉工作進(jìn)程;?
  • 附錄二:nginx的啟動(dòng)腳本如下

  • #!/bin/sh?
  • #?
  • #?nginx?-?this?script?starts?and?stops?the?nginx?daemon?
  • #?
  • #?chkconfig:???-?85?15??
  • #?description:??Nginx?is?an?HTTP(S)?server,?HTTP(S)?reverse?\?
  • #???????????????proxy?and?IMAP/POP3?proxy?server?
  • #?processname:?nginx?
  • #?config:??????/etc/nginx/nginx.conf?
  • #?config:??????/etc/sysconfig/nginx?
  • #?pidfile:?????/var/run/nginx.pid?
  • ??
  • #?Source?function?library.?
  • #.?/etc/rc.d/init.d/functions?
  • ??
  • #?Source?networking?configuration.?
  • #.?/etc/sysconfig/network?
  • ??
  • #?Check?that?networking?is?up.?
  • green='\e[0;32m'??
  • red='\e[0;31m'?
  • NC='\e[0m'??
  • ??
  • nginx="/usr/sbin/nginx"?
  • prog=$(basename?$nginx)?
  • ??
  • NGINX_CONF_FILE="/etc/nginx/nginx.conf"?
  • pidfile="/var/run/nginx.pid"?
  • lockfile=/var/lock/subsys/nginx?
  • ??
  • make_dirs()?{?
  • ???#?make?required?directories?
  • ???user=`$nginx?-V?2>&1?|?grep?"configure?arguments:"?|?sed?'s/[^*]*--user=\([^?]*\).*/\1/g'?-`?
  • ???if?[?-z?"`grep?$user?/etc/passwd`"?];?then?
  • ???????useradd?-M?-s?/bin/nologin?$user?
  • ???fi?
  • ???options=`$nginx?-V?2>&1?|?grep?'configure?arguments:'`?
  • ???for?opt?in?$options;?do?
  • ???????if?[?`echo?$opt?|?grep?'.*-temp-path'`?];?then?
  • ???????????value=`echo?$opt?|?cut?-d?"="?-f?2`?
  • ???????????if?[?!?-d?"$value"?];?then?
  • ???????????????#?echo?"creating"?$value?
  • ???????????????mkdir?-p?$value?&&?chown?-R?$user?$value?
  • ???????????fi?
  • ???????fi?
  • ???done?
  • }?
  • ??
  • start()?{?
  • ????[?-x?$nginx?]?||?exit?5?
  • ????[?-f?$NGINX_CONF_FILE?]?||?exit?6?
  • ????make_dirs?
  • ????echo?-e?"Starting?$prog?...................................\c"?
  • ????$nginx?-c?$NGINX_CONF_FILE?>/dev/null?2>&1?
  • ????retval=$??
  • ???echo?
  • ????[?$retval?-eq?0?]?&&?touch?$lockfile?&&????echo?-e?"Started??$prog?...................................[?${green}OK${NC}?]"??
  • ????[?$retval?!=?0?]??&&?echo?-e?"Started??$prog?................................[?${red}Falied${NC}?]\r"?
  • ???return?$retval?
  • }?
  • ??
  • stop()?{?
  • ????echo?-e?"Stopping?$prog?...................................\c"?
  • ????PID=`cat?$pidfile`?
  • ?? ?killproc $prog -TERM
  • ????retval=$??
  • ????echo?
  • ????[?$retval?-eq?0?]?&&?rm?-f?$lockfile?&&?echo?-e?"Stoped???$prog?...................................[?${green}OK${NC}?]\r"??
  • ????[?$retval?!=?0?]??&&?echo?-e?"Stoped??$prog?................................[?${red}Falied${NC}?]\r"?
  • ????return?$retval?
  • }?
  • status(){??
  • ????if?[?-e?$pidfile?]??
  • ???????then??
  • ????????PID=`cat?$pidfile`??
  • ????????echo??"Nginx?(pid?$PID)?is?running..."??
  • ???????else??
  • ????????echo??"Nginx?is?stopped"??
  • ????fi??
  • }?
  • ??
  • restart()?{?
  • ????configtest?||?return?$??
  • ????stop?
  • ????sleep?1?
  • ????start?
  • }?
  • ??
  • reload()?{?
  • ????configtest?||?return?$??
  • ????echo?-n?$"Reloading?$prog:?"?
  • ????killproc?$nginx?-HUP?
  • ????RETVAL=$??
  • ????echo?
  • }?
  • ??
  • configtest()?{?
  • ??$nginx?-t?-c?$NGINX_CONF_FILE?>/dev/null??2>&1?
  • }?
  • ???
  • case?"$1"?in?
  • ????start)?
  • ????????$1?
  • ????????;;?
  • ????stop)?
  • ????????$1?
  • ????????;;?
  • ????status)?
  • ????????$1?
  • ????????;;?
  • ????restart)?
  • ????????$1?
  • ????????;;?
  • ????reload)?
  • ????????$1?
  • ????????;;?
  • ????configtest)?
  • ????????$1?
  • ????????;;?
  • ????*)?
  • ????????echo?$"Usage:?$0?{start|stop|status|restart|reload|configtest}"?
  • ????????exit?2?
  • esac?

  • 附錄三:日志切割腳本如下

  • #?cat?/etc/logrotate.d/nginx??
  • /var/log/nginx/*.log?{?
  • daily?
  • rotate?7?
  • missingok?
  • create?600?www?www?
  • notifempty?
  • sharedscripts?
  • postrotate?
  • if?[?-f?/var/run/nginx.pid?];?then?
  • kill?-USR1?$(cat?/var/run/nginx.pid)?
  • fi?
  • endscript?
  • }?
  • ?

    總結(jié)

    以上是生活随笔為你收集整理的关于nginx信号控制的“故障”案例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。