请问,Linux系统针对CPU/内存/带宽的业务自检是什么?
[toc]
通过ssh或vnc登录主机,执行 top 命令,并分析结果,如图:
分析、识别恶意进程:
a.该命令结果字段【id】为CPU 空闲 百分比,如果这个值很低,就要注意看下面那些进程占用CPU高;
b.该命令结果【%CPU】列默认会把CPU占用高的程序排在前面,看排在前几个的就行。例如:上图所示“sap100x”为系统监控进程,如果该进程占用CPU高(超过20%),建议卸载后重装:
卸载:执行/usr/local/qcloud/stargate/admin/uninstall.sh脚本
重装:参考文档:https://www.qcloud.com/document/product/248/6211
c.如果是业务相关进程占用CPU高,就要考虑提升配置了
d.其他案例:
上图中进程【kthreadd】很明显是恶意进程,CPU使用率99.3%,正常情况下该进程名没有方括号“..”,且pid一定是2,可以用命令【 lsof –p 3875】或【 ps aux | grep 3875】看下这个进程在调用哪个文件或者是由哪个文件产生,处理对应文件即可。如果是恶意进程,相关文件大多在/tmp下,同时请关注crontab是否有可疑的计划任务。
怎么处理恶意文件:(例如:文件名:error.sh,对应的pid:12345)
kill -9 12345 #先杀掉恶意进程;
chmod 000 error.sh; chattr +i error.sh #解除该文件的执行权限并锁死
上图中pid为5518的进程【khungtaskd】很明显在模仿pid为33的进程【khungtaskd】,后者才是系统进程。
tips :top命令结果command列中,带有括号..的进程一般都“不正经”,需要留神注意!
通过ssh或vnc登录主机,执行 top 命令,按 shift+m ,对【%MEM】降序排列并分析结果,如图:
对占用内存高的进程,同样可以用命令【 lsof –p pid 】或【 ps aux | grep pid 】看下这个进程在调用哪个文件或者是由哪个文件产生,处理对应文件即可(如果是业务相关进程,就要考虑提升配置了)。
1 .执行命令 nethogs ,分析结果(该命令需要安装: yum –y install nethogs )
从命令结果可以看出使用网络带宽进程的pid、进程名、发送速度、接收速度(其中发送、接收速度单位是kb/s,最大速度为带宽的1/8)。这里主要应该关注发送速度【SENT】列,可以用命令【lsof –p pid】或【ps aux | grep pid】看下发送速度大进程在调用哪个文件或者是由哪个文件产生,处理对应文件即可(如果是业务相关进程,就要考虑提升配置了)。
2 .执行命令iftop -n,分析结果
从命令结果可以看出(命令结果默认会把发送或接收带宽高的记录排在上面),本机到目标IP的实时发送速度和接收速度(单位是MBPS,就是带宽,发送带宽最大值就是控制台设置的公网带宽,接收带宽最大值理论上和公网带宽1:1,实际上在平台总流量不大的情况下可以突破,在用网高峰期会恢复到1:1的限制)。
结合以上两个命令,可以找到占用带宽给的进程或IP。如果找到了相应的进程,按照上文处理即可;如果是某个目标IP占用带宽高,在确定不是正常业务导致的情况下,可以用iptables对其进行限制。