关于nginx reload操作问题

在拥有长连接正在运行的nginx中执行nginx -s relaod操作,偶尔存在老进程变成僵尸进程,新进程无法正常使用的情况,有遇到这样现象的么?或者说这个问题该如何排查一下?

邀请回答
提问于 2021-01-17 17:17
151 次浏览
共1个回答

发表评论
  • 陶辉
    2021-01-18 09:19

    未遇到过。是worker进程还是master进程?新的worker进程无法正常使用是什么意思?是TCP连接建立不起来?还是返回的http response不对?

    0
    回复
    举报
    • heiying 2021-01-18 13:29

      陶老师,是老的worker进程变成了僵尸,新的worker无法正常使用是TCP连接建立不起来。

      0
      回复
      举报
    • 陶辉 回复 heiying 2021-01-18 13:53

      老的master进程还在吗?

      0
      回复
      举报
    • heiying 回复 陶辉 2021-01-18 18:07

      嗯  在的,这个问题是个非必现的问题,出现的环境中一直是有个长连接一直存在。

      0
      回复
      举报
    • 陶辉 回复 heiying 2021-01-18 18:30

      出现僵尸进程有可能是Nginx的bug,你用的是哪个版本的Nginx?

      另外,长连接一直存在的话,有没有试过配置worker_shutdown_timeout?

      0
      回复
      举报
    • heiying 回复 陶辉 2021-01-20 15:17

      nginx版本是1.16.0,有想过配置worker_shutdown_timeout,但考虑到如果在超时时间未主动断开就会强制关闭,这样的话就会对原连接的数据完整性有影响,所以就没试,陶老师,如果使用这个配置,正常在应用环境中这个超时时间一般都配置多大?

      0
      回复
      举报
    • 陶辉 回复 heiying 2021-01-21 09:04

      如果针对HTTP/1协议,通常是取1个请求处理过程中各阶段超时时间的最大值,有些在固定的,有些需要你根据业务特性去评估,比如:一般读header超时是60秒,两次read操作超时是60秒,你的业务中读body通常需要多长时间,发送body呢?

      0
      回复
      举报
    • heiying 回复 陶辉 2021-01-25 09:40

      陶老师,谢谢您的回答,这个问题现在已经找到原因了,是内存的问题。

      0
      回复
      举报
    • 陶辉 回复 heiying 2021-01-25 14:25

      内存?

      0
      回复
      举报
提问者

heiying

暂无个人介绍

  • 0

    文章

  • 0

    粉丝

  • 3

    被赞

heiying
按Enter键发送
您已邀请位用户
版权所有©F5 Networks,Inc.保留所有权利。京ICP备16013763号-5