简单的服务器故障排查分析

这里的服务器系统我想特指为Ubuntu/centos,因为其他操作系统我还没接触过,指令可能不互通,但想法是可以互通的。

服务器运行变得迟缓

发现问题

先从怀疑开始吧,如果你发现自己的服务器响应及运行变慢了(持续性的),或者是部署在上面的某些应用崩了,这些情况可能是运行了某些应用过多地消耗了服务器上的配置,或是被人运行了一些恶意程序。

尽管服务器的配置自己心里有点数,但有时候明明只跑了一个博客,或仅仅是搭了个梯子就变得运行迟缓,就应该看看服务器的实时情况。

监控系统状况:top  
查看内存情况:free -m  
查看进程:ps aux  
查看端口状况:netstat -lntp  
查看磁盘空间:df -h  

以上均为基本的信息查询,如果发现可疑点要进一步查询的,可以自行找相关指令语法。

解决问题

cpu占用率冒高
查看进程,观察有哪些非系统进程占据了过多资源,可视情况选择性关闭。先选择要关闭的进程,记录其PID(第一列):

kill -9 PID  

如果不知道当前进程跑的是什么文件,可以到/proc文件夹里查找相应PID的文件夹,里面会有相应的虚拟文件。

内存不足
这类错误信息往往还会打印在终端上,如果数量不多,可根据显示内容进行操作,一般警告内容会为:

kill process XXX

运行该操作即可。但如果不想关闭该应用或是配置不足导致的,可临时添加swap分区应急。该方法也极度经济实惠,相当于划分部分磁盘当作内存,具体划分多少自行分配:

# cd /var/  
# dd if=/dev/zero of=swapfile bs=1M count=1024  
# /sbin/mkswap swapfile  
# /sbin/swapon swapfile  
# echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab  

相应指令分析:
1,进入/var目录
2,创建大小为[count值]的文件块,单位为MB,swap大小可在这里修改
3,创建swap文件,文件名为[swapfile],可自行改名
4,激活swap文件
5,令swap开机自启动

建议一步到位,swap转换率不高,内存设置过低需设置多个swap,过高的话删除比较麻烦,至少先要另外设置一个swap,使得被删除的swap不被占用。

rm -rf /var/swapfile

删除后台进程&&释放端口
我遇到的此类进程一般为python脚本,尤其是用gunicorn部署的项目,因为是后台运行的,不懂如何温柔的关闭,只好暴力关闭。

这类进程都是占用端口的,先查看端口命令:

netstat -lntp  

如果想关闭特定端口port,则:

netstat -lntp | grep port  

然后记录对应PID并关闭即可:

kill -9 PID  

磁盘空间不足
首先建议亲去升级配置呢。。。
如果没办法,就删除部分文件吧。

慎重使用,保证删的干干净净,找不回来了
删除文件:

rm file

删除文件夹:

rm -rf dir

还可以写正则表达式批量删除文件:

[先挖个坑,有空回来填]

服务器疑似被入侵

发现问题

发现服务器多了一些不认识的文件,发现部分文件的最新修改日期不在自己的操作时间段,甚至收到vps运行商的安全警告邮件。

贴一些简单的排查指令:

查看服务器的历史操作指令:history  
查看上一次登录时间:last  
查看在线用户:who  
查看上一次登录失败信息:lastb  

可结合使用上一部分的指令,发现排查可疑的进程,及时关闭。(可备份研究)

分析问题&&解决问题

历史指令分析
使用history查看服务器过去所执行的语句(最多记录最近的1000条),从中发现可疑的信息,可快速定位问题根源。

问题不一定是黑客入侵主机引起,有可能是自己的操作不当引起的。

黑客入侵排查
这里主要排查黑客有没有成功登录主机。
由于口令泄露,口令爆破等问题导致黑客入侵主机(或未遂),可以从日志中找到蛛丝马迹。

日志位置:
/var/log
里面记录着各种系统日志,如wtmp(last指令),btmp(lastb指令)等。

根据日志查看可疑的登录操作,若发现帐号在可疑时间段登录,那建议赶紧修改密码:

# passwd  
# {输入当前密码}  
# {输入新密码}  
# {再次输入新密码}  

查看所有用户命令:

cat /etc/passwd |cut -f 1 -d :  

若发现有新的可疑用户,赶紧删除:

userdel -r username  

对服务器杀毒
rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。Rootkit通过加载特殊的驱动,修改系统内核,进而达到隐藏信息的目的。

使用chkrootkit来杀毒:

# apt install chkrootkit  
# chkrootkit  

chkrootkit可以在Linux系统中运行基于签名和进程来检查系统中是否存在rootkit。

亦可安装其他杀毒工具。

声明:文中方法可能非常不靠谱!!

发表评论

电子邮件地址不会被公开。 必填项已用*标注