设为首页 收藏本站
查看: 3223|回复: 6

[经验分享] 关于nginx信号控制的“故障”案例

[复制链接]

尚未签到

发表于 2012-8-8 08:43:55 | 显示全部楼层 |阅读模式
最近几天发现nginx的日志老切割不成功,遂来查找问题。    最开始以为是logrotate的脚本问题,遂手动切割,运行以下的命令
  • logrotate -vf /etc/logrotate.d/nginx
    发现运行这个是没有问题的,终于,在service nginx restart后,发现了问题
    问题是在用service nginx restart后,nginx.pid文件才会自动消失,于是,仔细检查脚本,发现一些端倪啊,一个字眼出现了
  • killproc $prog -QUIT
-QUIT从容关闭,也就是说这个进程是慢慢关闭的,不是立即关闭的,于是验证。如图
6f0829fab772c1e56eca43739c01f1b1.png
查看进程如下
393a68806636fd5e160f13c0f1d2b126.png
可以看到,nginx正在shutdown之中,但没有一下子全部关闭了。
e22afc378b353ca304fe02591f50c2e3.png
随着时间的推移,nginx老的进程在继续关闭中……
1840c5f97a9c595bd71498c2c2888c61.png
到最后,nginx之前的老进程全部关闭……
043256f796f74ab8ecb8fce622378b3c.png
这时,nginx.pid文件没有了
2b7dc5b9a093be6a6d0d6362501f263d.png
到此,nginx.pid文件神奇消失的问题终于被找出来了。
  继续分析-----日志分割,依靠的是nginx.pid获取nginx的进程号,分割成功后,出现的情况是nginx依然昨天的日志,不写分割后的日志。
   那么现在需要对这个脚本进行修改,把stop函数中的-QUIT改为-TERM 立即关闭。(话说我这个脚本是来自官网改造的,看来官网也不是100%的准确哦,做运维要细心啊
   官方脚本地址http://wiki.nginx.org/RedHatNginxInitScript
  再次运用此脚本重启
  • service nginx restart
  问题不再重现,已经解决了。
总结,一个小小的参数,可能会引发无限大的问题,所以,学知识要细心啊!
=============================================================
附录一:nginx的信号控制
  • TERM,INT 快速关闭;
  • QUIT      从容关闭
  • HUP       平滑重启,重新加载配置文件;
  • USER1     重新打开日志文件,在切割日志的时候用途较大;
  • USER2     平滑升级可执行程序;
  • WINCH     从容关闭工作进程;
附录二:nginx的启动脚本如下
  • #!/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
  • }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-790-1-1.html 上篇帖子: nginx上传文件大小限制 下篇帖子: nginx在使用varnish作缓存情况下获取用户真实ip 信号

尚未签到

发表于 2013-3-13 20:58:03 | 显示全部楼层
好好 学习了 确实不错

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-16 01:16:22 | 显示全部楼层
佛曰,色即是空,空即是色!今晚,偶想空一下

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-18 16:59:06 | 显示全部楼层
商女不知亡国恨、妓女不懂婚外情。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-21 07:02:36 | 显示全部楼层
相当不错,感谢无私分享精神!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-24 02:01:38 | 显示全部楼层
丑,但是丑的特别,也就是特别的丑!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-29 07:37:42 | 显示全部楼层
解释就是掩饰,掩饰就是编故事!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表