记录一次CPU使用率飙升导致服务崩溃的解决过程

发布于:2024-05-16 ⋅ 阅读:(72) ⋅ 点赞:(0)

Hello , 我是小恒
近段时日拿到了实习offer,在复习个人介绍,技术面等面试技巧
最近的更新比较慢的事,这篇文章也是挤时间写的
本文说说前天的一次小服务器崩溃的解决始末

服务情况

服务器配置2核2g,系统linux centos7
服务有八十多个静态网页,属于前后端分离的前端静态资源部分,部署迁移容易
还有两个node服务,前后端均有,使用postgresql

问题出现

上午11点左右服务基本全部停止,具体问题不清楚
在这里插入图片描述

情况分析

查看一下CPU100%内存爆满SSH远程连接卡顿,很不稳定,基本无法使用
使用Xftp连接成功,如果是正常情况的资源爆满的话,我们也能实现资源转移
在这里插入图片描述

迁移

由于SSH远程控制的卡顿,我先将静态资源转移到另一服务器上
迁移:域名批量修改解析+静态资源文件转移+nginx泛域名解析
域名批量修改解析:高级索引导出所需修改解析的xlsx表格,批量修改
使用Xftp传输,这个不多说
nginx配置文件泛域名配置,参照配置

server
listen    80;
server_name  ~^(?<subdomain>.+)\.yourdomain\.com$;
root   /../$subdomain;
index  index.html index.htm index.php;

服务器端排查

通过Xftp删除部分文件,加上重启服务器,终于使用SSH登录成功了
问题来源来自一段脚本,具体我不清楚脚本内容

检查进程
使用ps加grep管道命令筛选出前20占用CPU使用率的进程

[root@RainYun-Q7c3pCXM ~]# ps auxw|head -1;ps auxw|sort -rn -k4|head -20
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
amavis    3757 72.8 42.0 1006656 790296 ?      Rs   23:19   0:10 /usr/sbin/clamd -c /etc/clamd.d/amavisd.conf
amavis    2045  0.2  5.5 377652 104308 ?       S    21:28   0:15 /usr/sbin/amavisd (ch6-avail)
amavis    2046  0.1  5.4 376156 103228 ?       S    21:28   0:11 /usr/sbin/amavisd (ch6-avail)
amavis    1757  0.0  5.2 367728 98772 ?        Ss   21:28   0:02 /usr/sbin/amavisd (master)
root      1924  0.0  3.2 282988 61056 ?        S    21:28   0:00 spamd child
root      1921  0.0  3.2 282988 61056 ?        S    21:28   0:00 spamd child
root      1319  0.1  3.2 282988 61552 ?        Ss   21:28   0:11 /usr/bin/spamd --pidfile /var/run/spamd.pid -d -c -m5 -H
mysql     2033  0.0  1.7 600252 32288 ?        Sl   21:28   0:05 /ewomail/mysql/bin/mysqld --basedir=/ewomail/mysql --datadir=/ewomail/mysql/data --plugin-dir=/ewomail/mysql/lib/plugin --user=mysql --log-error=RainYun-Q7c3pCXM.err --pid-file=/ewomail/mysql/data/RainYun-Q7c3pCXM.pid --socket=/tmp/mysql.sock --port=3306
root       541  0.0  1.4 363300 27376 ?        Ssl  21:28   0:00 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
www        926  0.0  1.1  65596 22016 ?        S    21:28   0:00 nginx: worker process

问题出现了:
ClamAV(防病毒软件):/usr/sbin/clamd 和 /usr/sbin/amavisd。
这些服务消耗了大量系统资源

kill PID

杀死即可

检查

CPU使用率恢复了
在这里插入图片描述
不过服务还是无法访问
猜测脚本开启了防火墙,尝试禁用 iptablesfirewalld ufw防火墙

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo ufw disable

最后恢复正常

总结

理解底层的原理后,解决这些问题也就是一步一步排查的过程
不过每个人都不是全能的,有时候很多问题也无法解决,这时候就是社区和朋友发挥作用了
多排查,多经历,多写文档,就有经验了