zoukankan      html  css  js  c++  java
  • nginx 服务器出现大量CLOSE_WAIT 排查结果

    1、查阅资料,查下close_wait 状态的直接原因,期间可以再次熟悉下 tcp 三次握手,四次挥手协议的基础知识。
    2、通过查询资料,最终可以确定的是nginx本身问题,根据网上常推荐的两种方式分别调整系统和nginx本身的参数均无法解决此问题。
    1)系统层面(快速释放空闲的tcp连接)

    net.ipv4.tcp_keepalive_time=30
    net.ipv4.tcp_keepalive_probes=2
    net.ipv4.tcp_keepalive_intvl=2

    2)nginx(参数配置)

    tcp_nodelay on  

    3、查阅nginx本身配置,发现有引用lua脚本获取请求中的cookie id,并且相关脚本中使用了aws redis 服务,初步怀疑是redis请求延迟导致。同时也怀疑是nginx 版本bug导致,又是一通咕咕。
    4、后来其他同事提醒怀疑是lua脚本问题,负责管理nginx的同事注释掉对应lua脚本并进行排查,最终定位为获取cookie id 的lua 脚本导致——去掉脚本,重启nginx问题解决。

    function cookie_id()
                local cookie, err = ck:new()
                if not cookie then
                    return "-"
                end
                local fields, err = cookie:get("JSESSIONID")
                if not fields then
                    return "-"
                else
                    return fields
                end
    end

    总结:

    根据TCP 四次挥手协议可以判断:哪台服务器出现CLOSE_WAIT,就是哪台服务器上部署的应用程序有问题(不管是服务端还是客户端),无论是开源服务,还是自己开发的应用程序,在此基础上分析问题。一般为代码逻辑或访问外部资源问题导致。

  • 相关阅读:
    公司的CMS参数
    Kafka 如何保证消息可靠性
    我来了
    spring解决乱码
    mybatis反向工程
    Unicode控制字符
    功能跟进记录
    创建IDataProvider实例
    腾讯2016研发工程师笔试题36车 6跑道 没有计时器 最少要几次取前三
    .net mvc下拉列表DropDownList控件绑定数据
  • 原文地址:https://www.cnblogs.com/husbandmen/p/10116285.html
Copyright © 2011-2022 走看看