• 网络连接


    网络连接状态:

    C:                              S:

    SYN_SEND
                SYN_RECV
    ESTABLISH
                ESTABLISH

    FIN_WAIT1
                CLOSE_WAIT
    FIN_WAIT2
                LAST_ACK
    TIME_WAIT 
                CLOSED

    http交互和上面的图形其实并不一样,TIME_WAIT 经常是服务端主动关闭的。
    TIME_WAITK可以通过调整内核参数解决。


    一直保持在CLOSE_WAIT状态,其实只有一种情况,就是在对方关闭连接之后服务器程序自己没有进一步发出ack信号。
    大量CLOSE_WAIT的解决办法总结为一句话那就是:查代码。

    查看网络连接:

    netstat -an| awk '/^tcp/ {++S[$NF]} END {for(i in S) print i ,S[i]}'

    案例一次线上服务器收到zabbix报警: 

    web01服务器cpu空闲值小于70%(该机器跑了多个tomcat)

    登录机器排查:

    首先是要top命令查看了一下,发现有个java进程占用了90%的cpu(这台服务器有多核cpu的)。

    找到进程pid通过top -H -p 命令查看了线程情况,发现该进程的所有线程占用cpu多高。

    如是通过ps命令找到该服务是一个运行后台的boss服务。

    打开运营后台发现几乎处于卡死状态。

    如是用了netstat 命令查看了网络连接状态,结果发现大量的CLOSE_WAIT状态。

    如是判断是开发的代码有问题,果然排除了代码后发现了问题,修改了代码,重启tomcat。

    用netstat再次查看发现大量的LAST_ACK 最后全部关闭,最终恢复正常。



  • 相关阅读:
    有效提高生产力的8个贴士
    如何提高团队编程水平
    PHPCMS V9使用中的一些心得体会
    2012全球SEO行业调查报告
    盘点SEO和SEM的优劣势
    DEDECMS 添加栏目图片
    2013年中国500强排行榜(公司名单及网址)
    十大淘宝搜索作弊行为
    利用curl抓取远程页面内容
    新浪,腾讯,淘宝,人人登陆
  • 原文地址:https://www.cnblogs.com/fanxuanhui-linux/p/5870171.html
Copyright © 2020-2023  润新知