linux服务器CPU占用100%,宝塔负载100%情况问题排查处理记录(CentOS 8.1系统)

发布时间 2023-04-13 15:10:47作者: 没用的阿吉是剑神

问题描述:linux服务器cpu占比达到100%,站点无法正常访问,宝塔面板进入后卡顿,负载显示也是持续100%(下方测试系统为CentOS 8.1)

排查可能:1.使用netstat命令查看目前的链接IP数,看是否有异常IP大量链接:

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n(查看显示所有连接IP及连接数量)

  2.看到上方如果有大量连接的IP,如外国的IP地址,我们可以在宝塔后台系统防火墙内屏蔽该外国IP段,屏蔽后查看资源占用情况是否有下降

 

 

 除宝塔外,也可以使用linux命令增加防火墙策略:

使用firewall-cmd --list-all命令查看现有的防火墙策略,如下图,红框内为刚刚添加的策略:

 

 禁止某个IP访问:

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="77.75.79.54" drop'

 

 

 上图显示已设置成功。然后执行firewall-cmd --reload命令重新加载防火墙

 

 再查看防火墙列表,刚刚添加的规则已经存在。

 3.使用top命令查看占用资源较多的进程,发现php-fpm和mysqld占比较大,进入宝塔对应php版本,调整对应的并发数和最大空闲进程数

 

 

2核4G的配置笔者调整为上述的配置,也可以安装下面的扩展

 

 

 

安装完毕后重启php,观察一段时间看资源占用情况是否有改善,mysqld的优化可点击对应的优化推荐进行设置优化,设置完毕后保存,重启mysql。

 

 

 

以上php和mysql设置完毕后,观察资源占比情况是否有改善。

 

4.查看所有网络连接,观察是否有异常。(可配合本篇第一条分析使用)

 

netstat -a 查看所有连接

 

netstat -n 以数字形式显示ip地址和端口号

 

netstat -na 以数字形式显示所有ip地址和端口号

 

netstat -a -o 显示所有端口号与进程的对应关系

 

 

 

  需要留意最后的状态情况进行分析。

6.设置完毕后可重启服务器,查看资源占用情况,如果资源占比还是接近100%,top命令查看有无异常的进程,通过kill 进程号命令终止异常进程,同时注意观察资源占比情况变化。

7.查看php慢日志和mysql慢日志,分析站点程序结构和错误,找出大量占用资源的原因进行优化。