• 生产环境故障


    系统运行缓慢

    e89dfbd33ae411f59177ee13ffbe20e

    ipmi应该是用于系统管理的远控进程,虽然这是一个利用空余的CPU资源进行一些接口自动调节的任务,但看着占那么多的资源还是怕出意外。并且现在已经出了意外 反正不管怎么样试试

    通过kipmid_max_busy_us值可占用以改变kipmi的调度方式实现降低cpu占用。

    临时降低

    echo 100 > /sys/module/ipmi_si/parameters/kipmid_max_busy_us        

    永久性降低(修改配置文件,模块/系统重启生效)

    echo "options ipmi_si kipmid_max_busy_us=100">/etc/modprobe.d/ipmi.conf

    修改了了之后再查看下系统负载,果然降低到了正常值。

    image

    发现大量gzip压缩进程和sshd进程占用cpu(最后发现是自己的备份脚本设置成了每分钟执行一次,自己把自己给坑了)

    324923224743501117

    还是root用户启动的,向同事确认没人用后直接关了看后续情况

    pgrep gzip|xargs kill                        #   查找进程pid并kill

     

     

     

    400多个php-fpm和nginx,占用CPU百分百

     

    image

    image

    CLOSE_WAIT
    CLOSE_WAIT是被动关闭连接是形成的。根据TCP状态机,服务器端收到客户端发送的FIN,则按照TCP实现发送ACK,因此进入CLOSE_WAIT状态。但如果服务器端不执行close(),就不能由CLOSE_WAIT迁移到LAST_ACK,则系统中会存在很多CLOSE_WAIT状态的连接。此时,可能是系统忙于处理读、写操作,而未将已收到FIN的连接,进行close。此时,recv/read已收到FIN的连接socket,会返回0

    服务器的连接状态而言,一般有三种比较常见的: Established、 Time_Wait、Close_Wait。 

    TCP连接关闭时需要四次握手

     

    A发一条FIN(关闭)请求给B,说我要关闭了;

    B回应一条ACK(确认)请求给A,说我知道了,你关吧,此时B就会进行CLOSE_WAIT状态;

    B发送一条FIN(关闭)请给A,说我要关闭了;

    A收到发送一条ACK(确认)消息说,你关闭吧。

    SYN表示建立连接,

    FIN表示关闭连接,

    ACK表示响应,

     

    HttpClient连接池的中创建连接数已经达到了最大数字,不能够创建新的连接了,已经创建的连接都是在等待关闭(CLOSE_WAIT)的状态,没有被放回到可用的连接池中,不能够用于处理新的连接请求,因而所有的请求都是堵在了从连接池中获取连接哪里

    通过原理图,我们知道了CLOSE_WAIT是被动关闭的状态。什么意思呢?比如客户端发了个请求,正常情况下是会收到服务器响应一个状态的,即Response。当客户端读取了这个返回后,会主动告诉服务器收到了,关闭连接。

    解决办法

    [root@121 ~]# lsof -i |grep 80

    image

    kill -9 26565

  • 相关阅读:
    这难道就是一个普通人的一生???
    【纪念】纪念随笔数上3位数
    【移动端】js禁止页面滑动与允许滑动
    【react懒加载组件】--react-lazyload
    ES6知识整理(7)--Set和Map数据结构
    Hibernate检索策略
    Hibernate HQL多表查询
    Hibernate各种查询操作(二)
    Hibernate各种查询操作(一)
    Hibernate多对多操作
  • 原文地址:https://www.cnblogs.com/pengrj/p/8994082.html
Copyright © 2020-2023  润新知